Turbomail与金字塔集成

时间:2011-06-06 22:42:55

标签: python pylons turbogears pyramid

我需要一种从Pyramid应用程序发送电子邮件的方法。我知道pyramid_mailer,但似乎有一个相当有限的消息类。我不明白是否可以使用模板从pyramid_mailer编写消息来生成电子邮件的正文。此外,我还没有看到任何关于是否支持富文本的内容,或者它是否只是简单的纯文本。

以前,我在Pylons框架中使用Turbomail。不幸的是,似乎没有任何适用于TurboMail for Pyramid的适配器。我知道TurboMail可以扩展到其他框架,但不知道我甚至会在哪里开始这样的任务。有没有人为金字塔写过适配器,或者能指出我需要做什么的正确方向?

2 个答案:

答案 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类指定bodyhtml构造函数参数来创建包含纯文本正文和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)