Интеграция Turbomail с Pyramid

Мне нужен способ отправить электронное письмо из приложения Pyramid. Я знаю о pyramid_mailer, но у него довольно ограниченный класс сообщений. . Я не понимаю, можно ли писать сообщения от pyrum_mailer, используя шаблоны для создания тела письма. Кроме того, я ничего не видел относительно того, поддерживается ли форматированный текст или это просто обычный текст.

Раньше я использовал Turbomail с платформой Pylons. К сожалению, нет доступных адаптеров для TurboMail for Pyramid. Я знаю, что TurboMail можно расширить для дополнительных фреймворков, но понятия не имею, с чего бы я вообще начал такую ​​задачу. Кто-нибудь написал адаптер для Pyramid или может указать мне правильное направление того, что потребуется для этого?


person h0st1le    schedule 06.06.2011    source источник
comment
Теперь существует пакет интеграции для пирамиды под названием pypi.python.org/pypi/pyramid_marrowmailer.   -  person iElectric    schedule 07.12.2012


Ответы (2)


Я не могу ответить на ваши вопросы о Turbomail, кроме как сказать, что я слышал, что он отлично работает с Pyramid.

Что касается пирамиды_почты, вполне возможно отображать ваши электронные письма, используя ту же подсистему, которая позволяет пирамиде отображать все ваши шаблоны.

from pyramid.renderers import render

opts = {} # a dictionary of globals to send to your template
body = render('email.mako', opts, request)

Кроме того, объект сообщения pyrym_mailer основан на объекте lamson MailResponse, который является стабильным и хорошо протестированным.

Вы можете создать письмо, состоящее как из обычного текста, так и из html, указав параметры конструктора body или html для класса Message.

plain_body = render('plain_email.mako', opts, request)
html_body = render('html_email.mako', opts, request)
msg = Message(body=plain_body, html=html_body)
person Michael Merickel    schedule 07.06.2011

вы устанавливаете турбомейл

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 = "[email protected]"
    subject = "testing turbomail"
    to = "[email protected]"
    send_mail(body, author, subject, to)
person karantan    schedule 14.06.2011