【问题标题】:Heroku, Flask, Flask-Mail, GmailHeroku、Flask、Flask-Mail、Gmail
【发布时间】:2015-01-15 20:43:06
【问题描述】:

我正在尝试使用 Flask 设置 heroku 应用程序,但在使用 Flask-Mail 时遇到问题。

我可以从 bash 运行我的脚本,并且每次都可以运行,但是当我将它推送到 Heroku 时,它会运行一段时间然后停止。以下是脚本的相关部分:

from flask.ext.mail import Mail
from flask.ext.mail import Message
app.config.update(dict(
    DEBUG = True,
    MAIL_SERVER = 'smtp.gmail.com',
    MAIL_PORT = 465,
    MAIL_USE_TLS = False,
    MAIL_USE_SSL = True,
    MAIL_USERNAME = 'xxx@xxx.com',
    MAIL_PASSWORD = 'xxx',
))
mail = Mail(app)
msg = Message(
          'Hello',
       sender = 'xxx@xxx.com',
       recipients = ['xxx@xxx.com'])
msg.body = "This is the email body"
msg.html = '<b>HTML</b> body 1234'
with app.open_resource("image.jpg") as fp:
    msg.attach("image.jpg", "image/jpg", fp.read())
@app.route('/test1')
def test1():
    with app.app_context():
        mail.send(msg)
    return "Sent"

我可以转到该路线并将其发送,但如果我在几分钟后再试一次,页面将正常加载,但不会发送任何电子邮件。日志中没有显示错误。

有人对如何解决这个问题有任何想法吗?

【问题讨论】:

  • 检查您的服务器日志,Gmail 会发送一个 OAuth 链接,您应该按照该链接从 Heroku 堆栈授权登录尝试。

标签: python email heroku flask


【解决方案1】:

以下配置是我用于 heroku 的。

MAIL_SERVER = 'smtp.gmail.com',
MAIL_PORT = 587,
MAIL_USE_TLS = True,
MAIL_USE_SSL = False,
MAIL_USERNAME = 'my_username@gmail.com',
MAIL_PASSWORD = 'my_password',

【讨论】:

    【解决方案2】:

    我认为您需要使用 Heroku 插件(顺便说一下,它可以是免费的,但需要信用卡)。

    https://devcenter.heroku.com/articles/smtp

    【讨论】:

    • 您绝对不需要 Heroku 插件,任何 SMTP 服务器都可以。现在,可以使用附加组件,有多个可供选择。根据我的经验,您最好租用服务器或使用 Gmail,Heroku 上所有 SMTP 提供商的支持都是废话。
    猜你喜欢
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 2020-12-29
    • 2015-04-12
    相关资源
    最近更新 更多