Отправка email

TODO! Проверь работу с Cc: и Bcc:

Защищенное STARTTLS, с авторизацией на SMTP сервере

import smtplib
from email.message import EmailMessage

smtp_serv  = "smtp.example.com"
username   = "no-reply@example.com"
password   = "password"
from_addr  = f"Mail Robot <{username}>"
reply_addr = "Support <support@example.com>"
to_addr    = "someuser@address.com"

msg = EmailMessage()
msg.set_content(body)

msg['Subject']  = subject
msg['From']     = from_addr
msg['To']       = to_addr
msg['Reply-to'] = reply_addr

smtpObj = smtplib.SMTP(smtp_serv, 587)
# smtpObj.set_debuglevel(1)
smtpObj.starttls()
smtpObj.login(username, password)
smtpObj.send_message(msg)  # или smtpObj.sendmail(from, [to], body)
smtpObj.quit()

Не защищенное, без авторизации

Иногда, если письмо необходимо переслать в пределах одного сервера (например, уведомление для администратора), авторизация не требуется.

import smtplib
from email.message import EmailMessage

smtp_serv = "smtp.example.com"
username  = "no-reply@example.com"
from_addr = "Some Script <no-reply@example.com>"
to_addr   = "admin@example.com"

msg = EmailMessage()
msg.set_content(body)

msg['Subject'] = subject
msg['From'] = from_addr
msg['To'] = to_addr

smtpObj = smtplib.SMTP(smtp_serv)
smtpObj.send_message(msg)
smtpObj.quit()