2011-01-10 10 views
19

Ich habe einige Unit Tests in meiner Django 1.2.4 App. Bei einem der Tests muss überprüft werden, ob E-Mails unter bestimmten Bedingungen gesendet werden. Wie kann ich das machen?Überprüfen, ob Mail von Unit Tests gesendet wurde

Idealerweise wäre es programmatisch, aber es wäre auch schön, die E-Mail-Nachricht auf der Konsole auszugeben.

Antwort

37

Die neueste Django-Testdokumentation enthält einen Abschnitt Email Services.

Dann einfach tun Sie so etwas wie:

from django.core import mail 

print mail.outbox[0].body 

Die HTML-Version über angebrachte alternative MIME-Typen behandelt, die Sie zugreifen können (falls Sie eine Anlage) wie

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

Outbox Objekte EmailMessages, further documented here

+1

Danke auch für das Zeigen, wie man die E-Mail-Nachricht selbst erhält (die Django-Dokumente zeigen nur, wie man den Betreff des Postausganges bekommt). Kennen Sie eine Referenz für die anderen Eigenschaften des Postausgangs, z. eine HTML-Version der Nachricht? –

+7

Die HTML-Version wird über angehängte alternative MIME-Typen gehandhabt, auf die Sie zugreifen können (wenn Sie eine angehängt haben), z. B. content, mimetype = mail.outbox [0] .alternatives [0] '. Outbox-Objekte sind EmailMessages, die hier weiter dokumentiert sind: https://docs.djangoproject.com/en/dev/topics/email/#django.core.mail.EmailMessage. – mrooney

+1

Ich wünschte, die Django-Doktoren erklärten das so klar wie @mrooney, und dass es eine Möglichkeit gäbe, ihm einen gewissen Ruf zu verleihen. –