English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Отправка писем Flask

Апликации, работающие в веб-среде, обычно требуют функции отправки писем пользователю/клиенту. Расширение Flask-Mail значительно упрощает создание простого интерфейса для настройки любого почтового сервера.

Вначале расширение Flask-Mail можно установить с помощью утилиты pip, как показано ниже -

# Имя файла: example.py
# Авторское право: 2020 By w3codebox
# Автор: ru.oldtoolbag.com
# Дата: 2020-08-08
pip install Flask-Mail

Затем необходимо настроить Flask-Mail, установив значения следующих параметров приложения.

НомерПараметрыОписание
1MAIL_SERVERИмя/IP адрес почтового сервера
2MAIL_PORTПорт сервера, используемого в данном случае
3MAIL_USE_TLSВключить/отключить шифрование TLS
4MAIL_USE_SSLВключить/отключить шифрование SSL
5MAIL_DEBUGПоддержка отладки, по умолчанию это состояние отладки Flask приложения
6MAIL_USERNAMEИмя пользователя отправителя
7MAIL_PASSWORDПароль отправителя
8MAIL_DEFAULT_SENDERУстановить значение по умолчанию для отправителя
9MAIL_MAX_EMAILSУстановить максимальное количество отправляемых почтовых сообщений
10MAIL_SUPPRESS_SENDЕсли app.testing установлено в true, то отправка будет подавлена
11MAIL_ASCII_ATTACHMENTSЕсли установлено в true, то имя файла будет преобразовано в ASCII

Модуль flask-mail содержит определения следующих важных классов.

Класс Mail

Он управляет требованиями электронной почты. Конструктор класса принимает следующий формат -

НомерМетодОписание
1send()Отправка содержимого объекта класса Message
2connect()Открывает соединение с почтовым хостом
3send_message()Отправка объекта сообщения

Класс Message

Он обертывает письмо, конструктор класса Message имеет несколько параметров -

# Имя файла: example.py
# Авторское право: 2020 By w3codebox
# Автор: ru.oldtoolbag.com
# Дата: 2020-08-08
flask-mail.Message(subject, recipients, body, html, sender, cc, bcc, 
    reply-to, date, charset, extra_headers, mail_options, rcpt_options)

Методы класса Message

attach() - Добавить приложение к сообщению. Этот метод принимает следующие параметры - filename - имя файла для прикрепления content_type - MIME-тип файла data - исходные данные файла disposition - обработка содержимого, если есть

add_recipient() - Добавить другого получателя сообщения

В данном примере SMTP-сервер Gmail от Google используется в качестве MAIL_SERVER для конфигурации Flask-Mail.

Шаг 1 - Импортируйте классы Mail и Message из модуля flask-mail в коде.

# Имя файла: example.py
# Авторское право: 2020 By w3codebox
# Автор: ru.oldtoolbag.com
# Дата: 2020-08-08
from flask_mail import Mail, Message

Шаг 2 - Затем настройте Flask-Mail по следующим параметрам.

# Имя файла: example.py
# Авторское право: 2020 By w3codebox
# Автор: ru.oldtoolbag.com
# Дата: 2020-08-08
app.config['MAIL_SERVER']='smtp.gmail.com'
 app.config['MAIL_PORT'] = 465
 app.config['MAIL_USERNAME'] = '[email protected]'
 app.config['MAIL_PASSWORD'] = '*****'
 app.config['MAIL_USE_TLS'] = False
 app.config['MAIL_USE_SSL'] = True

Шаг 3 - Создайте экземпляр класса Mail.

# Имя файла: example.py
# Авторское право: 2020 By w3codebox
# Автор: ru.oldtoolbag.com
# Дата: 2020-08-08
mail = Mail(app)

Шаг 4 - Установите объект Message в Python-функции, маппинг URL (‘/’).

# Имя файла: example.py
# Авторское право: 2020 By w3codebox
# Автор: ru.oldtoolbag.com
# Дата: 2020-08-08
@app.route("/")
 def index():
     msg = Message('Hello', sender='[email protected]', recipients=['[email protected]'])
     msg.body = "This is the email body"
     mail.send(msg)
     return "Sent"

Шаг 5 - Полный код представлен ниже. Запустите следующий скрипт в Python Shell и перейдите по URL: http://localhost:5000/.

# Имя файла: example.py
# Авторское право: 2020 By w3codebox
# Автор: ru.oldtoolbag.com
# Дата: 2020-08-08
from flask import Flask
 from flask_mail import Mail, Message
 app = Flask(__name__)
 mail=Mail(app)
 app.config['MAIL_SERVER']='smtp.gmail.com'
 app.config['MAIL_PORT'] = 465
 app.config['MAIL_USERNAME'] = '[email protected]'
 app.config['MAIL_PASSWORD'] = '*****'
 app.config['MAIL_USE_TLS'] = False
 app.config['MAIL_USE_SSL'] = True
 mail = Mail(app)
 @app.route("/")
 def index():
     msg = Message('Hello', sender='[email protected]', recipients=['[email protected]'])
     msg.body = "Hello Flask message sent from Flask-Mail"
     mail.send(msg)
     return "Sent"
 if __name__ == '__main__':
     app.run(debug=True)

Обратите внимание, что内置的不安全功能 в службе Gmail может предотвратить эту попытку входа, возможно, потребуется снизить уровень безопасности. Войдите в свою учетную запись Gmail и перейдите в  Эта ссылкаДля снижения безопасности.