Das Ergebnis ist 'nail.py':
Code: Alles auswählen
#!/usr/bin/env python
# CC0 1.0 Universal <http://creativecommons.org/publicdomain/zero/1.0/deed.de>
import sys
from ConfigObject import ConfigObject
from argparse import ArgumentParser
from os.path import expanduser
from simplemail import Email
def send_email(subject, body, attachements, sender_name, sender_email, recipients, smtp):
email = Email()
email.subject = subject
email.message = body
for attachement in attachements:
email.attachments.add_filename(attachement)
email.from_address = sender_email
email.from_caption = sender_name
for recipient in recipients:
email.recipients.add(recipient)
email.smtp_server = smtp.host
email.smtp_user = smtp.user
email.smtp_password = smtp.password
email.send()
if __name__ == "__main__":
parser = ArgumentParser()
parser.add_argument('-f', '--config', metavar="config",
default=expanduser("~/.nailrc"))
parser.add_argument('-s', '--subject', metavar="subject",
default="(no subject)")
parser.add_argument('recipients', metavar='recipient', nargs='+')
parser.add_argument('-a', '--attachement', metavar="attachement",
action="append")
args = parser.parse_args()
config = ConfigObject()
config.read(args.config)
body = sys.stdin.read()
send_email(args.subject, body, args.attachement, config.sender.name,
config.sender.email, args.recipients, config.smtp)
Code: Alles auswählen
$ cat msgbody | nail.py -s "my subject" -a my-first-attachement.tgz -a my-second-attachement.tgz "Recipient 1 <recipient1@example.com>" "Recipient 2 <recipient1@example.com>"
Code: Alles auswählen
[smtp]
host = smtp.example.com
user = my-user
password = secret-password
[sender]
name = My User
email = my-user@example.com

Verwendet werden:
* http://pypi.python.org/pypi/ConfigObject/
* http://pypi.python.org/pypi/argparse/
* http://www.python-forum.de/post-18144.html