gpt4 book ai didi

python - Heroku 上的 Flask 存在 MailGun 配置问题

转载 作者:行者123 更新时间:2023-12-01 05:54:47 24 4
gpt4 key购买 nike

我的电子邮件无法到达所需的位置。我已经在 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-Mail 库:

    from flask.ext.mail import Mail, Message

mail = Mail(app)

def send_mail(to, title, msg):
email = Message(title, recipients = [to], body = msg)

return mail.send(email)

但果然,我尝试发送电子邮件,但它永远不会到达那里。我做错了什么吗?我错过了什么吗? (如果您想知道的话,我已经删除了真实的数据库 URL 和电子邮件地址。)

提前非常感谢。

最佳答案

根据the documentation ,Mailgun 的正确 SMTP 服务器是 smtp.mailgun.org 而不是 localhost,端口是 587 而不是 25 。也许改变这些就能解决问题。看起来还需要登录名和密码。

使用 Mailgun API 而不是 Flask-Mail 可能会取得更大的成功。我发现它在我自己的应用程序中使用起来更容易。

这是我编写的配置和一个小实用函数,用于使用 requests 通过 Heroku 上的 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 控制面板,您可以在其中获取上述代码中所需的 key 和域。

关于python - Heroku 上的 Flask 存在 MailGun 配置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13079755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com