Я отправляю электронное письмо с простым текстом следующим образом:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
def send_message():
msg = MIMEMultipart('alternative')
s = smtplib.SMTP('smtp.sendgrid.net', 587)
s.login(USERNAME, PASSWORD)
toEmail, fromEmail = to@email.com, from@email.com
msg['Subject'] = 'subject'
msg['From'] = fromEmail
body = 'This is the message'
content = MIMEText(body, 'plain')
msg.attach(content)
s.sendmail(fromEmail, toEmail, msg.as_string())
В дополнение к этому сообщению я хотел бы прикрепить txt
Начиная с Python3.6 я рекомендовал бы, начинают использовать EmailMessage вместо MimeMultipart. Меньше импорта, меньше строк, никакая потребность поместить получателей и в заголовки сообщения и в параметр функции отправителя SMTP.
import smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg["From"] = FROM_EMAIL
msg["Subject"] = "Subject"
msg["To"] = TO_EMAIL
msg.set_content("This is the message body")
msg.add_attachment("This is the file contents", filename="log_file.txt")
s = smtplib.SMTP('smtp.sendgrid.net', 587)
s.login(USERNAME, PASSWORD)
smtp.send_message(msg)