| import os, email, smtplib |
| |
| |
| def send(from_address, to_addresses, cc_addresses, subject, message_body): |
| """ |
| Send out a plain old text email. It uses sendmail by default, but |
| if that fails then it falls back to using smtplib. |
| |
| Args: |
| from_address: the email address to put in the "From:" field |
| to_addresses: either a single string or an iterable of |
| strings to put in the "To:" field of the email |
| cc_addresses: either a single string of an iterable of |
| strings to put in the "Cc:" field of the email |
| subject: the email subject |
| message_body: the body of the email. there's no special |
| handling of encoding here, so it's safest to |
| stick to 7-bit ASCII text |
| """ |
| # addresses can be a tuple or a single string, so make them tuples |
| if isinstance(to_addresses, str): |
| to_addresses = [to_addresses] |
| else: |
| to_addresses = list(to_addresses) |
| if isinstance(cc_addresses, str): |
| cc_addresses = [cc_addresses] |
| else: |
| cc_addresses = list(cc_addresses) |
| |
| message = email.Message.Message() |
| message["To"] = ", ".join(to_addresses) |
| message["Cc"] = ", ".join(cc_addresses) |
| message["From"] = from_address |
| message["Subject"] = subject |
| message.set_payload(message_body) |
| |
| server = smtplib.SMTP("localhost") |
| server.sendmail(from_address, to_addresses + cc_addresses, message.as_string()) |
| server.quit() |