Flask Mail 在 Ubuntu 上部署时不起作用
Posted
技术标签:
【中文标题】Flask Mail 在 Ubuntu 上部署时不起作用【英文标题】:Flask Mail doesn't work when deployed on Ubuntu 【发布时间】:2020-02-23 13:59:12 【问题描述】:我正在使用 Flask-Mail 发送密码重置电子邮件。当我在开发服务器上尝试它时,一切正常。在 Ubuntu(使用 nginx、Gunicorn)上部署时,在长时间加载后发送电子邮件会导致错误 502,所以我认为发送电子邮件没有问题,而是设置有问题。
部署后我的init代码:
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager
from flask_mail import Mail
from flask_socketio import SocketIO
import json
with open('/etc/config.json') as config_file:
config = json.load(config_file)
app = Flask(__name__)
app.config['SECRET_KEY'] = config.get('SECRET_KEY')
app.config['SQLALCHEMY_DATABASE_URI'] = config.get('SQLALCHEMY_DATABASE_URI')
db = SQLAlchemy(app)
bcrypt = Bcrypt(app)
login_manager = LoginManager(app)
login_manager.login_view = 'login'
login_manager.login_message_category = 'info'
app.config['MAIL_SERVER'] = 'smtp.gmail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = config.get('EMAIL_USER')
app.config['MAIL_PASSWORD'] = config.get('EMAIL_PASS')
mail = Mail(app)
在 config.json 中正确提供了信息
【问题讨论】:
能否请您尝试使用此配置一次。 MAIL_SERVER='smtp.gmail.com' MAIL_PORT=465 MAIL_USE_TLS = False MAIL_USE_SSL= True 我已经试过了,在开发服务器上它工作正常,部署后我得到 502 【参考方案1】:为客户禁用 CAPTCHA 如果您没有使用 2 因素身份验证,并且您已验证 Python 源中的凭据正确,请按照以下步骤操作:
1.) 在浏览器中登录 gmail
2.) 导航到 DisplayUnclockCaptcha 页面。
3.) 点击继续按钮,您会看到消息“Account access enabled Please try login to your Google account again from your new device or application.”
4.)运行您的 Python 脚本 - 您的登录尝试应该会成功。
【讨论】:
【参考方案2】:您好,我可能有点晚了,但是托马斯您的问题是由于 linode 引起的,这可能是您使用的部署服务器,决定默认阻止您正在使用的端口,如您在此处看到的那样。 https://www.linode.com/community/questions/19082/i-just-created-my-first-linode-and-i-cant-send-emails-why 如果你遵循给定的过程,它肯定会起作用
【讨论】:
以上是关于Flask Mail 在 Ubuntu 上部署时不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Django Logging 在 Ubuntu/Apache 服务器上部署时不起作用
在 Ubuntu 上使用 Nginx 部署 Flask 应用
在 Ubuntu 14.04 VPS (Digital Ocean) 上部署 Flask 应用程序的问题
如何使用Nginx和uWSGI或Gunicorn在Ubuntu上部署Flask Web应用