无法使用pyramid_mailer和gmail发送邮件

3 投票
2 回答
1577 浏览
提问于 2025-04-16 22:07

我正在尝试通过我的Pyramid网站使用Gmail的SMTP服务和pyramid_mailer这个工具发送邮件。首先,如果有人有其他的邮件解决方案建议,请告诉我!

我在我的dev.ini文件中添加了以下内容:

mail.host = smtp.gmail.com
mail.username = user@gmail.com
mail.password = password
mail.port = 465
mail.ssl = True

然后我这样发送消息:

config.registry['mailer'] = Mailer.from_settings(settings)

之后...

mailer = request.registry['mailer']
message = Message(subject="hello world",
                      sender="admin@mysite.com",
                      recipients=["someaddress@gmail.com"],
                      body="hello!")
mailer.send(message)

不幸的是,我遇到了以下错误:

SMTPServerDisconnected: please run connect() first

我哪里做错了?

谢谢!

2 个回答

2

邮件实际上是在交易完成之前不会被发送。

你应该完成这个交易:

import transaction
transaction.commit()

或者使用立即发送的选项:

mailer.send_immediately(message, fail_silently=False)
5

以下设置对我有效:

# pyramid_mailer
mail.host = smtp.gmail.com
mail.port = 587
mail.username = my.login@gmail.com
mail.password = mypassword
mail.tls = True

你的发送邮件的代码和我的差不多,所以应该可以用。

我没有尝试过SSL,但我猜那边可能会有各种各样的问题。

撰写回答