Generate emails with mailto URLs and Python
Scenario: You want to send several emails where only small things change. This sounds like a job for a mail merge program. But if you use mailto: links and Python, you get a nice shell-based solution. This combination also has the advantage of opening each generated email in your email client so that you can take one last look before sending it.
mailto: URL syntax
"mailto:" recipients ( "?" key "=" value ("&" key "=" value)* )?
Open mailto URLs with Python
#!/usr/bin/python
from urllib import quote
import webbrowser
def mailto(recipients, subject, body):
"recipients: string with comma-separated emails (no spaces!)"
webbrowser.open("mailto:%s?subject=%s&body=%s" %
(recipients, quote(subject), quote(body)))
body_template = """Hello %(name)s!
How are you?"""
def gen(email, name):
mailto(email, "Hi!", body_template % locals())
gen("joe@example.com", "Joe")
gen("jane@example.com,jill@example.com", "Jane and Jill")
Related: