2010-06-29 17 views
1

J'ai config.action_mailer.delivery_method =: test et utilisation delayed_job. J'exécute du code qui place un email à envoyer dans une file d'attente, puis exécute des jobs rake: travail, mais nulle part je ne vois l'email qui est envoyé, et ActionMailer :: Base.deliveries est nul. Je cherche juste à déboguer et à voir le contenu des emails htese, comment puis-je le faire?Afficher les e-mails envoyés

Répondre

2

Lorsque config.action_mailer.delivery_method est défini sur :test, les messages électroniques ne sont pas réellement envoyés mais simplement ajoutés à une liste de messages «envoyés». Cette liste n'existe qu'en mémoire. Cela signifie que seul le processus qui a "envoyé" l'e-mail peut voir la liste et vérifier qu'il a bien été "envoyé". Étant donné que le code qui envoie réellement votre courrier est en cours d'exécution dans un processus externe (via un appel system() ou un appel en retour), votre script appelant ne peut pas voir la file d'attente en mémoire de ce processus externe et gagne ainsi ne sera pas capable de vérifier que les emails ont bien été "envoyés".

Cela ne devrait pas vraiment être une grosse affaire à moins que quelque chose ne va pas. Par défaut, les e-mails sortants seront écrits dans le fichier journal, ce qui vous permet de vérifier qu'ils envoient réellement en cochant la case correspondante. Si vous voulez voir/manipuler la file d'attente en mémoire, vous devrez ajouter du code à votre travail, car c'est le seul code qui y aura accès.