You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.5 KiB
40 lines
1.5 KiB
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()
|