Flask-Mail 尝试连接到 Gmail 时超时

Flask-Mail times out trying to connect to Gmail

我有一个非常小的 flask 应用程序,它使用 flask-mail 发送电子邮件,但是当我 运行 它什么也没有发生,没有错误,没有例外,没有!

这是代码

from flask import Flask
from flask_mail import Mail, Message

app = Flask(__name__)

DEBUG = True
MAIL_SERVER = 'smtp.gmail.com'
MAIL_PORT = 465
MAIL_USE_TLS = False
MAIL_USE_SSL = True
MAIL_DEBUG = True
MAIL_USERNAME = "myemail@gmail.com"
MAIL_PASSWORD = "mypassword"

app.config.from_object(__name__)

mail = Mail(app)

@app.route("/")
def send_mail():
    msg = Message("Hello",
                  sender="myemail@gmail.com",
                  recipients=["another_email@gmail.com"],
                  body="just testing",
                  )
    mail.send(msg)
    return "Message sent"
if __name__ == '__main__':
    app.run()

更新

很长一段时间后我得到了这个错误 TimeoutError: [Errno 110] Connection timed out

看来我的问题解决了 首先去这个页面 解锁验证码

https://accounts.google.com/DisplayUnlockCaptcha

然后转到此页面以允许从安全性较低的应用程序进行访问 https://www.google.com/settings/security/lesssecureapps

我尝试了 Ali Faki 建议的解决方案,但它对我没有用,但当我进一步尝试时(简单的代码来检查问题出在哪里),结果发现邮件端口被云服务提供商阻止了(在我的例子中是 Linode),你必须设置一个域名并联系他们才能再次打开它。

和 Mustapha 一样。

找到这个:https://www.linode.com/docs/guides/running-a-mail-server/

在 Linode 上发送电子邮件

为了打击垃圾邮件,Linode 限制 2019 年 11 月 5 日之后创建的新帐户在所有 Linode 上的端口 25、465 和 587 上的出站连接。

如果您需要从您的 Linode 发送邮件,我们要求您首先为您计划用于发送邮件的任何 Linode 配置 (1) 有效的 DNS A 记录和 (2) rDNS 记录。然后,打开来自 Linode 管理器的支持票——我们会要求您提供将用于邮寄的 Linode 的名称。

完成这些步骤并提供信息后,我们的支持团队将很乐意审核您的请求。