Flask 邮件是不是适用于 heroku

Posted

技术标签:

【中文标题】Flask 邮件是不是适用于 heroku【英文标题】:Does Flask mail works on herokuFlask 邮件是否适用于 heroku 【发布时间】:2021-07-10 16:39:37 【问题描述】:
flask mail works perfectly on my local host but it is failing to work on heroku. Below is my setup code


app.config['MAIL_SERVER'] = 'smtp.gmail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = '@gmail.com'
app.config['MAIL_PASSWORD'] = '*****'

mail = Mail(app)



   @app.route("/mymessage" ,methods= ['POST','GET'])
    def mymessage():


    em = request.form['email']
    mm = request.form['message']
    msg = Message('Hello', sender = '@gmail.com', recipients = 
   ['@gmail.com'])
    msg.body = mm + " " + 'email address of  client :' + em
    mail.send(msg)
    flash("Message sent successful")  
    return redirect(url_for('home'))       
     


I get this error "2021-07-10T16:36:34.785576+00:00 app[web.1]: smtplib.SMTPAuthenticationError: (534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbs\n5.7.14 YJZzLi6GK2jMF6AunHXhEoSyz2r6fSOYLB4ABgjP0jNdTWHh3ig-fhlvwc7oxm-quoLVa\n5.7.14 Z7CHpvU2lMufxnPm_0Dsc3p1uWgZhenvZQpb2TdWaZTZ-Sg_wojgwf4zlOlBe44O>\n5.7.14 Please log in via your web browser and then try again.\n5.7.14  Learn more at\n5.7.14  https://support.google.com/mail/answer/78754 m6sm3480925qtx.9 - gsmtp')

2021-07-10T16:36:34.787223+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=POST path="/mymessage" host=buykev.herokuapp. com request_id=fe5ec81e-6d2f-4f8a-b148-a37a15c0bc28 fwd="102.176.94.10" dyno=web.1 connect=4ms service=871ms status=503 bytes=0 protocol=https"

【问题讨论】:

【参考方案1】:

Google 阻止了您从 heroku 进行的登录尝试。您需要启用less secure apps 并为您的邮件帐户使用应用密码来解决此问题。

首先我们必须启用two step verification 然后只有我们可以使用应用程序密码。启用两步验证后,转到app password 并在获得应用密码后选择应用作为邮件和设备(我选择了windows 计算机),用它替换当前密码。并尝试再次发送邮件。它会起作用的。

app.config['MAIL_PASSWORD'] = 'your_app_password_here'

【讨论】:

执行此操作后,我收到此错误,请“smtplib.SMTPAuthenticationError smtplib.SMTPAuthenticationError: (535, b'5.7.8 用户名和密码不被接受。了解更多信息:\n5.7.8 support.google.com/mail/?p=BadCredentials o3sm7967291wrm。 5 - gsmtp')" 您应该重新检查生成的应用程序密码和您正在使用的用户名,因为此解决方案对我有用。现在我可以在 heroku 上发送电子邮件了。您还应该考虑错误地访问提供的链接并按照给出的步骤进行操作。 support.google.com/mail/?p=BadCredentials 欢迎您,您可以考虑将此标记为已接受的答案,并告诉您解决了用户名和密码不接受错误的原因。

以上是关于Flask 邮件是不是适用于 heroku的主要内容,如果未能解决你的问题,请参考以下文章

Python发送邮件

通过电子邮件安装的适用于 Android 的 Google FCM

Flask 邮件仅发送到特定域

FluentEmail - 适用于 .NET 和 .NET Core 的邮件发送库

Python通过smtp服务发送电子邮件给指定用户(适用于Zabbix邮件报警)

Flask-mail 发邮件慢(即使异步)