此处是金字塔新手,并尝试设置pyramid_mailer以向我发送电子邮件:
我在development.ini中:
mail.host = smtp.gmail.com
mail.username = EMAIL@gmail.com
mail.password = PASSWORD
mail.port = 587
mail.ssl = True
[handlers]
keys = console
在我的项目中/ __ init __。py:
config.include('pyramid_mailer')
在我的项目/ views.py
中from pyramid_mailer.mailer import Mailer
from pyramid_mailer import get_mailer
from pyramid_mailer.message import Message
@view_config(renderer="templates/site_view.pt") def site_view(self):
...
config.registry['mailer'] = Mailer.from_settings(settings)
mailer = request.registry['mailer']
message = Message(subject="It works!",
sender="EMAIL@gmail.cm",
recipients=["EMAIL@gmail.com"],
body="Hey there!")
mailer.send(message)
我错过了一些非常基本的东西吗?
答案 0 :(得分:4)
事实上,你遗漏了一些基本的东西! : - )
.send()
是一个lazy-send,它将消息添加到事务管理器。如果您未使用pyramid_tm
,则在请求结束时不会发送邮件。事务性电子邮件很好,因为如果在调用send()
后代码中出现异常,则不会发送邮件。
无论如何,发送代码的方式是.send_immediately()
。
答案 1 :(得分:2)
您可能需要检查并使用:
mail.tls = True
Can't send emails with pyramid_mailer and gmail
您也可以使用.send_immediately(message, fail_silently=False)
你会有类似的东西:
mail.host = smtp.gmail.com
mail.username = EMAIL@gmail.com
mail.password = PASSWORD
mail.port = 587
mail.tls = True
在您的设置中:
config.include('pyramid_mailer')
然后
mailer = get_mailer(request)
message = Message(subject="It works!",
sender="EMAIL@gmail.cm",
recipients=["EMAIL@gmail.com"],
body="Hey there!")
mailer.send_immediately(message, fail_silently=False)
如果没有任何效果,您可以使用
启用调试mail.debug = True
它应该在stdout中转储smtp会话。如果有什么不起作用。你会知道为什么。如果一切都很好。