与Heroku和Mailgun一起使用Flask-Mail时,电子邮件无法发送

时间:2013-03-06 16:00:44

标签: python heroku smtp mailgun flask-mail

我一直在编写一个简单的应用程序来测试如何使用Flask-Mail通过SMTP方法发送电子邮件(需要将SMTP移植到不同的SMTP服务)。为此,我试图通过Heroku使用Mailgun,但经过多次试验,错误和研究后,我仍然无法收到要发送的电子邮件。

我的问题与此问题类似,Flask on Heroku with MailGun config issues,但除了使用Mailgun的API之外,我在这个问题上看不到任何解决方案,这对我正在进行的项目是不可行的。< / p>

目前我的烧瓶/烧瓶邮件代码设置如下(当然是剥离的):

from flask import Flask
from flask.ext.mail import Mail
from flask.ext.mail import Message

app = Flask(__name__)
mail = Mail(app)

app.config.setdefault('SMTP_SERVER', environ.get('MAILGUN_SMTP_SERVER'))
app.config.setdefault('SMTP_LOGIN', environ.get('MAILGUN_SMTP_LOGIN'))
app.config.setdefault('SMTP_PASSWORD', environ.get('MAILGUN_SMTP_PASSWORD'))
app.config.setdefault('MAIL_SERVER', environ.get('MAILGUN_SMTP_SERVER'))
app.config.setdefault('MAIL_USERNAME', environ.get('MAILGUN_SMTP_LOGIN'))
app.config.setdefault('MAIL_PASSWORD', environ.get('MAILGUN_SMTP_PASSWORD'))
app.config.setdefault('MAIL_USE_TLS', True)

def EmailFunction(UserEmail):
    msg = Message("Hello",
                  sender='testing@test.com',
                  recipients=[UserEmail])

    msg.html = "<b>testing</b>"
    mail.send(msg)
    return msg.html

@app.route('/EmailTest/')
def EmailTestPage():
    EmailFunction('developer@test.com')
    return 'Email Sent'

if __name__ == '__main__':
    app.run(host='0.0.0.0',debug=True)

我错过了什么吗?有没有办法在代码通过时测试出错的地方并返回'Email Sent',但似乎没有发送/接收电子邮件。

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

看起来您没有在SMTP端口中阅读。默认情况下,Flask邮件可能会尝试使用25,而mailgun则使用587。