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)* )?
#!/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: