Heroku上的Flask存在MailGun配置问题

2024-09-28 16:58:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我的电子邮件无法到达需要的位置。我在Heroku上设置了Flask应用程序的配置文件,如下所示:

class ProductionConfig(Config):
    DATABASE_URL = 'postgres://stuff'
    MAIL_SERVER = os.environ.get('MAILGUN_SMTP_SERVER', 'localhost')
    MAIL_PORT = os.environ.get('MAILGUN_SMTP_PORT', 25)
    MAIL_USERNAME = os.environ.get('MAILGUN_SMTP_LOGIN', None)
    MAIL_PASSWORD = os.environ.get('MAILGUN_SMTP_PASSWORD', None)
    DEFAULT_MAIL_SENDER = 'myemail@myemail.com'
    MAIL_USE_SSL = True

使用Flask邮件库:

^{pr2}$

但果然,我试着发一封邮件,却始终没有收到。我做错事了吗?我错过什么了吗?(我已经删除了真实的数据库URL和电子邮件地址,以防您怀疑。)

非常感谢。在


Tags: noneurlflaskgetserverosport电子邮件
1条回答
网友
1楼 · 发布于 2024-09-28 16:58:08

根据the documentation,Mailgun的正确SMTP服务器是smtp.mailgun.org不是{},端口是{}不是{}。也许换个新的就好了。看来登录名和密码也是必需的。

使用MailgunAPI而不是Flask邮件可能会更成功。我发现它在我自己的应用程序中更容易使用。

这是我在Heroku上使用requests库通过Mailgun发送邮件的配置和一个小实用程序函数:

import requests    

app = Flask(__name__)
app.config['MAILGUN_KEY'] = 'YOUR-KEY-HERE'
app.config['MAILGUN_DOMAIN'] = 'YOUR-MAILGUN-DOMAIN'

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

def send_mail(to_address, from_address, subject, plaintext, html):
    r = requests.\
        post("https://api.mailgun.net/v2/%s/messages" % app.config['MAILGUN_DOMAIN'],
            auth=("api", app.config['MAILGUN_KEY']),
             data={
                 "from": from_address,
                 "to": to_address,
                 "subject": subject,
                 "text": plaintext,
                 "html": html
             }
         )
    return r

如果您登录到Heroku并单击Mailgun插件,它将带您进入Mailgun控制面板,在那里您可以获得上面代码中所需的密钥和域。

相关问题 更多 >