1import os, email, smtplib 2 3 4def send(from_address, to_addresses, cc_addresses, subject, message_body): 5 """ 6 Send out a plain old text email. It uses sendmail by default, but 7 if that fails then it falls back to using smtplib. 8 9 Args: 10 from_address: the email address to put in the "From:" field 11 to_addresses: either a single string or an iterable of 12 strings to put in the "To:" field of the email 13 cc_addresses: either a single string of an iterable of 14 strings to put in the "Cc:" field of the email 15 subject: the email subject 16 message_body: the body of the email. there's no special 17 handling of encoding here, so it's safest to 18 stick to 7-bit ASCII text 19 """ 20 # addresses can be a tuple or a single string, so make them tuples 21 if isinstance(to_addresses, str): 22 to_addresses = [to_addresses] 23 else: 24 to_addresses = list(to_addresses) 25 if isinstance(cc_addresses, str): 26 cc_addresses = [cc_addresses] 27 else: 28 cc_addresses = list(cc_addresses) 29 30 message = email.Message.Message() 31 message["To"] = ", ".join(to_addresses) 32 message["Cc"] = ", ".join(cc_addresses) 33 message["From"] = from_address 34 message["Subject"] = subject 35 message.set_payload(message_body) 36 37 server = smtplib.SMTP("localhost") 38 server.sendmail(from_address, to_addresses + cc_addresses, message.as_string()) 39 server.quit() 40