2011-06-06 4 views
5

J'ai besoin d'une méthode pour envoyer un email depuis une application Pyramid. Je connais pyramid_mailer, mais il semble avoir une classe de message assez limitée. Je ne comprends pas s'il est possible d'écrire les messages de pyramid_mailer en utilisant des modèles pour générer le corps de l'email. De plus, je n'ai rien vu à savoir si le texte enrichi est supporté, ou s'il s'agit simplement de texte simple.Intégration de Turbomail avec Pyramid

Auparavant, j'utilisais Turbomail avec le framework Pylons. Malheureusement, il ne semble pas y avoir d'adaptateurs disponibles pour TurboMail for Pyramid. Je sais que TurboMail peut être étendu pour des frameworks supplémentaires, mais je ne sais pas où je pourrais même commencer une telle tâche. Est-ce que quelqu'un a écrit un adaptateur pour Pyramid ou peut me diriger dans la bonne direction de ce qui serait nécessaire pour le faire?

+1

est maintenant paquet d'intégration pour la pyramide appelée http://pypi.python.org/pypi/pyramid_marrowmailer – iElectric

Répondre

4

Je ne peux pas répondre à vos questions Turbomail autrement que de dire que j'ai entendu dire que ça fonctionne très bien avec Pyramid. En ce qui concerne pyramid_mailer, il est tout à fait possible de rendre vos emails en utilisant le même sous-système qui permet à pyramid de rendre tous vos templates.

from pyramid.renderers import render 

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

En outre, l'objet du message de pyramid_mailer est basé sur l'objet MailResponse de Lamson, qui est stable et bien rodée.

Vous pouvez créer un courrier composé à la fois d'un corps de texte brut et d'un code HTML en spécifiant les paramètres constructeurs body ou html de la classe 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

merci c'est exactement ce que je cherchais .. cheers – h0st1le

3

vous installez turbomail

easy_install turbomail 

créer un fichier dans votre projet de pyramide (je mets mon lib) avec quelque chose comme ceci:

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

puis dans votre contrôleur que vous venez appeler cette fonction comme ceci:

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