Интеграция турбомайла с пирамидой
Мне нужен метод для отправки электронной почты из приложения пирамиды. Я знаю оpyramid_mailer , но, похоже, у него довольно ограниченный класс сообщений. Я не понимаю, можно ли писать сообщения из pyramid_mailer, используя шаблоны для создания тела письма. Кроме того, я не видел ничего относительно того, поддерживается ли форматированный текст или это просто обычный текст.
Ранее я использовал Турбомайл с каркасом пилонов. К сожалению, там, кажется, не быть каких-либо адаптеров, доступных для TurboMail для пирамиды. Я знаю, что TurboMail может быть расширен для дополнительных фреймворков, но понятия не имею, где бы я даже начал такую задачу. Кто-нибудь написал адаптер для Pyramid или может указать мне правильное направление того, что потребуется для этого?
2 ответа:
Я не могу ответить на ваши вопросы о Турбомайле, кроме как сказать, что я слышал, что он прекрасно работает с пирамидой.
Что касается pyramid_mailer, то вполне возможно визуализировать ваши электронные письма, используя ту же подсистему, которая позволяет pyramid визуализировать все ваши шаблоны.
from pyramid.renderers import render opts = {} # a dictionary of globals to send to your template body = render('email.mako', opts, request)
Кроме того, объект сообщения pyramid_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)
Вы устанавливаете turbomail
easy_install turbomail
Создайте файл в своем проекте pyramid (я вставил его в 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)