English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Апликации, работающие в веб-среде, обычно требуют функции отправки писем пользователю/клиенту. Расширение Flask-Mail значительно упрощает создание простого интерфейса для настройки любого почтового сервера.
Вначале расширение Flask-Mail можно установить с помощью утилиты pip, как показано ниже -
# Имя файла: example.py # Авторское право: 2020 By w3codebox # Автор: ru.oldtoolbag.com # Дата: 2020-08-08 pip install Flask-Mail
Затем необходимо настроить Flask-Mail, установив значения следующих параметров приложения.
Номер | Параметры | Описание |
1 | MAIL_SERVER | Имя/IP адрес почтового сервера |
2 | MAIL_PORT | Порт сервера, используемого в данном случае |
3 | MAIL_USE_TLS | Включить/отключить шифрование TLS |
4 | MAIL_USE_SSL | Включить/отключить шифрование SSL |
5 | MAIL_DEBUG | Поддержка отладки, по умолчанию это состояние отладки Flask приложения |
6 | MAIL_USERNAME | Имя пользователя отправителя |
7 | MAIL_PASSWORD | Пароль отправителя |
8 | MAIL_DEFAULT_SENDER | Установить значение по умолчанию для отправителя |
9 | MAIL_MAX_EMAILS | Установить максимальное количество отправляемых почтовых сообщений |
10 | MAIL_SUPPRESS_SEND | Если app.testing установлено в true, то отправка будет подавлена |
11 | MAIL_ASCII_ATTACHMENTS | Если установлено в true, то имя файла будет преобразовано в ASCII |
Модуль flask-mail содержит определения следующих важных классов.
Он управляет требованиями электронной почты. Конструктор класса принимает следующий формат -
Номер | Метод | Описание |
1 | send() | Отправка содержимого объекта класса Message |
2 | connect() | Открывает соединение с почтовым хостом |
3 | send_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)
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 и перейдите в Эта ссылкаДля снижения безопасности.