2011-01-10 4 views
19

Tengo algunas pruebas de unidad en mi aplicación Django 1.2.4. Una de las pruebas debe verificar que los correos electrónicos se envíen bajo ciertas condiciones. ¿Cómo puedo hacer esto?Verificar que el correo fue enviado desde las pruebas de la unidad

Lo ideal sería que fuera programático, pero también sería bueno imprimir el cuerpo del correo electrónico en la consola.

Respuesta

37

La última documentación de prueba de Django tiene una sección Email Services.

A continuación, sólo hacer algo como:

from django.core import mail 

print mail.outbox[0].body 

La versión HTML se maneja a través de tipos MIME alternativas adjuntos, que se puede acceder (Si ha conectado uno) como

content, mimetype = mail.outbox[0].alternatives[0] 

objetos de salida se EmailMessages, further documented here

+1

Gracias también por mostrar cómo obtener el mensaje de correo electrónico en sí (los documentos de Django solo muestran cómo obtener el tema de la bandeja de salida). ¿Conoce una referencia para las otras propiedades de la bandeja de salida, p. una versión html del mensaje? –

+7

La versión HTML se maneja a través de tipos de miméticos alternativos adjuntos, a los que se puede acceder (si se adjuntó uno) como 'content, mimetype = mail.outbox [0] .alternatives [0]'. Los objetos de la bandeja de salida son EmailMessages, que están documentados aquí: https://docs.djangoproject.com/en/dev/topics/email/#django.core.mail.EmailMessage. – mrooney

+1

I * entonces * desearía que los documentos de Django lo explicaran tan claramente como @mrooney, y que había una manera de otorgarle algún representante. –

Cuestiones relacionadas