Отправка письма через SMTP


python  smtp  mail  tls 

config.py

EMAIL_FROM = 'Служба поддержки'
EMAIL_HOST = 'mail.specialistoff.net'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'info@specialistoff.net'
EMAIL_HOST_PASSWORD = 'PASSWORD'
EMAIL_USE_TLS = True
EMAIL_RECIPIENT = 'info@specialistoff.net'
--- solution.py
  • solution.py
#!/usr/bin/env python3

import smtplib

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formataddr


def send_notify(email, body):
    msg = MIMEMultipart()
    msg['From'] = formataddr((app.config['EMAIL_FROM'], app.config['EMAIL_HOST_USER']))
    msg['To'] = ", ".join([email])
    msg['Subject'] = app.config['EMAIL_FROM']

    msg.attach(MIMEText(body, 'html'))

    app.logger.info(msg)

    try:
        smtpObj = None
        smtpObj = smtplib.SMTP(
            app.config['EMAIL_HOST'],
            port=app.config['EMAIL_PORT']
        )
        app.logger.info(smtpObj.ehlo())
        if app.config['EMAIL_USE_TLS']:
            smtpObj.starttls()
        smtpObj.login(app.config['EMAIL_HOST_USER'], app.config['EMAIL_HOST_PASSWORD'])
        app.logger.info(msg)
        smtpObj.send_message(msg)
        smtpObj.quit()
        app.logger.info("Письмо успешно отправлено")
    except (smtplib.SMTPAuthenticationError,
            smtplib.SMTPConnectError,
            smtplib.SMTPDataError,
            smtplib.SMTPException,
            smtplib.SMTPHeloError,
            smtplib.SMTPRecipientsRefused,
            smtplib.SMTPResponseException,
            smtplib.SMTPSenderRefused,
            smtplib.SMTPServerDisconnected) as e:
        app.logger.error("Ошибка доставки письма")
        print(e.message)
© RemiZOffAlex