我需要一种从Pyramid应用程序发送电子邮件的方法。我知道pyramid_mailer,但似乎有一个相当有限的消息类。我不明白是否可以使用模板从pyramid_mailer编写消息来生成电子邮件的正文。此外,我还没有看到任何关于是否支持富文本的内容,或者它是否只是简单的纯文本。
以前,我在Pylons框架中使用Turbomail。不幸的是,似乎没有任何适用于TurboMail for Pyramid的适配器。我知道TurboMail可以扩展到其他框架,但不知道我甚至会在哪里开始这样的任务。有没有人为金字塔写过适配器,或者能指出我需要做什么的正确方向?
答案 0 :(得分:4)
我不能回答你的Turbomail问题,只是说我听说它适用于金字塔。
关于pyramid_mailer,完全可以使用相同的子系统呈现您的电子邮件,让金字塔呈现您的所有模板。
from pyramid.renderers import render
opts = {} # a dictionary of globals to send to your template
body = render('email.mako', opts, request)
此外,pyramid_mailer Message对象基于lamson MailResponse对象,该对象稳定且经过充分测试。
您可以通过为Message类指定body
或html
构造函数参数来创建包含纯文本正文和html的邮件。
plain_body = render('plain_email.mako', opts, request)
html_body = render('html_email.mako', opts, request)
msg = Message(body=plain_body, html=html_body)
答案 1 :(得分:3)
你安装turbomail
easy_install turbomail
在你的金字塔项目中创建一个文件(我把我的文件放在lib中),如下所示:
import turbomail
def send_mail(body, author,subject, to):
"""
parameters:
- body content 'body'
- author's email 'author'
- subject 'subject'
- recv email 'to'
"""
conf = {
'mail.on': True,
'mail.transport': 'smtp',
'mail.smtp.server': 'MAIL-SERVER:25',
}
turbomail.interface.start(conf)
message = turbomail.Message(
author = author,
to = to,
subject = subject,
plain = 'This is HTML email',
rich = body,
encoding = "utf-8"
)
message.send()
turbomail.interface.stop()
然后在你的控制器中你只需要调用这个函数:
#first import this function
from myproject.lib.mymail import send_mail
#some code...
body = "<html><head></head><body>Hello World</body></html>"
author = "mymail@example.com"
subject = "testing turbomail"
to = "mysecondmail@example.com"
send_mail(body, author, subject, to)