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()