Комментарии 11
Может кто поможет? Сломался на Flask-Mail. Иду по мануалу - не берет он ничего из переменных окружения.
В init
app = Flask(__name__)
app.config.from_object(Config)
mail = Mail(app)
во flask shell
Instance: C:\python\microblog\instance
>>> from app import mail
>>> mail.MAIL_SERVER
>>> app.config['MAIL_SERVER']
'localhost'
т.е. из конфига все грузится - Flask-Mail ничего не видит. Вроде как в ручную его инициализировать не надо. Тогда чего ему еще надо?
По текущему коду можно сказать, что вы собираетесь использовать эмулируемый сервер на своём компьютере, для определения проблемы нужны логи в момент ошибки и описание при каких действиях она появляется
При чем тут это? mail.MAIL_SERVER пустая, mail.send падает с "не найден сервер".
Вставил в код ручную инициализацию mail:
mail = Mail(app)
mail.MAIL_SERVER = app.config['MAIL_SERVER']
mail.MAIL_PORT = app.config['MAIL_PORT']
сразу все отработало без ошибок
Попробуйте такой способ, это называется отложенная инициализация и будет объяснена в 15 главе
mail = Mail()
app = Flask(__name__)
app.config.from_object(Config)
mail.init_app(app)
Если у вас нормально отрабатывают другие расширения, то посмотрите файл /app/mail.py, возможно в функции send_async_email(app, msg) не активируется контекст приложения, функции расширений во время выполнения обращаются к контексту приложения и берут сами все необходимые параметры, в flask shell вы отправляете сообщение в том же потоке, где контекст приложения загружен по умолчанию.
Не работает ссылка:
Нерабочая ссылка https://pythonhosted.org/Flask-Mail/ в параграфе:
Flask-Mail поддерживает некоторые функции, которые я здесь не использую, такие как списки Cc и Bcc. Обязательно ознакомьтесь с документацией Flask-Mail, если вас интересуют эти опции.
Тема с gmail немного не до конца раскрыта)) долго ковырялся пока дополнительную статью не прочел - https://mailtrap.io/blog/flask-send-email-gmail/
В общем если не очень получается - лучше сразу почитать, как gmail настроить
Мега-Учебник Flask Глава 10: Поддержка электронной почты (издание 2024)