2011-06-06 24 views
5

Necesito un método para enviar un correo electrónico desde una aplicación Pyramid. Sé de pyramid_mailer, pero parece tener una clase de mensaje bastante limitada. No entiendo si es posible escribir los mensajes de pyramid_mailer usando plantillas para generar el cuerpo del correo electrónico. Además, no he visto nada con respecto a si se admite el texto enriquecido, o si se trata simplemente de texto simple.Integración de Turbomail con Pyramid

Anteriormente, estaba usando Turbomail con el marco de Pylons. Lamentablemente, no parece haber ningún adaptador disponible para TurboMail para Pyramid. Sé que TurboMail puede ampliarse para marcos adicionales, pero no tengo idea de dónde comenzaría siquiera esa tarea. ¿Alguien ha escrito un adaptador para Pyramid o puede señalarme en la dirección correcta de lo que se requiere para hacerlo?

+1

Hay ahora es el paquete de integración para pirámide llamado http://pypi.python.org/pypi/pyramid_marrowmailer – iElectric

Respuesta

4

No puedo responder a sus preguntas sobre Turbomail, salvo decir que escuché que funciona bien con Pyramid.

En cuanto a pyramid_mailer, es posible procesar sus correos electrónicos utilizando el mismo subsistema que permite que pyramid represente todas sus plantillas.

from pyramid.renderers import render 

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

Además, el objeto Message pyramid_mailer se basa en el objeto lamson MailResponse, que es estable y bien probado.

Puede crear un correo que contenga tanto un cuerpo de texto sin formato como html, especificando los parámetros del constructor body o html en la clase 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) 
+0

gracias esto es exactamente lo que estaba buscando .. aplausos – h0st1le

3

instalar turbomail

easy_install turbomail 

crea un archivo en el proyecto de la pirámide (i puse en lib) con algo como esto:

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() 

y luego en su controlador que acaba de llamar a esta función como esta:

#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)