Python, отправка писем

05.05.2019

Пример функции для отправки писем через Gmail:

import email.mime.multipart
import email.mime.text
import smtplib
import ssl

def send_email(receiver_email, subject, body):
    sender_email = 'user@gmail.com'
    message = email.mime.multipart.MIMEMultipart('alternative')
    message['Subject'] = subject
    message['From'] = sender_email
    message['To'] = receiver_email
    message.attach(email.mime.text.MIMEText(body, "html"))
    context = ssl.create_default_context()
    with smtplib.SMTP_SSL(
            'smtp.gmail.com',
            465,
            context=context
        ) as server:
        try:
            server.login(sender_email, '12345678')
            server.sendmail(sender_email, receiver_email, message.as_string())
            return True
        except smtplib.SMTPException as exc:
            print(exc)
            return False

Несколько замечаний:

  • варианты обработки исключений и возвращаемых функцией значений могут быть самыми разными;
  • к письму с помощью attach можно сначала добавить текстовый вариант сообщения, а уже после HTML вариант; в этом случае, если у пользователя отключено отображение HTML, будет корректно отображен текстовый вариант.