Heute möchte ich Euch in einem kurzen HowTo zeigen, wie ihr E-Mails aus Drupal ganz einfach mithilfe des Moduls devel.module und mailsystem.module (oder einer settings.php Konfigurationseinstellung) abfangen und den Quellcode debuggen könnt.
Ein solches Debugging ist hilfreich, wenn ihr z.B. mit Darstellungsfehlern in E-Mail Programmen zu kämpfen habt und Euch nicht sicher seid, welcher Code tatsächlich beim Mail Client angelangt.
Es gibt natürlich zahlreiche Alternativen zu diesem Verfahren, z.B. die E-Mails serverseitig abzufangen oder mit einem sehr einfachen E-Mail Client zu arbeiten. Die hier beschriebene Methode verhindert zusätzlich, dass Test-E-Mails tatsächlich versandt werden und ist relativ bequem in 3 Schritten umzusetzen:
So geht's:
1. Modul(e) installieren:
Zunächst müsst ihr devel.module und optional mailsystem.module wie gewohnt installieren.
2. Konfiguration / Aktivierung:
2a. (Nur bei Verwendung von Mailsystem) - Mailsystem Konfiguration:
Lasst in Mailsystem (admin/config/system/mailsystem) eine neue Mail-Handler Klasse generieren, indem ihr unter "New Class" als format() "MimeMailSystem" wählt (oder welches System ihr zum Formatieren der Mails auch immer einsetzt!)
Für die mail() Funktion wählt ihr nun "DevelMailLog", damit die formatierte Ausgabe nicht verschickt, sondern in das Devel E-Mail Protokoll geschrieben werden
2b. (Ohne Mailsystem) - settings.php erweitern
Ergänzt dazu einfach eine entsprechende Konfiguration in der settings.php, um das zu verwendende Mailsystem umzuschalten:
$conf['mail_system'] = array(
'default-system' => 'DevelMailLog',
);
?>
Details:
http://www.webomelette.com/drupal-modules-debug-emails
3. Testmail senden und Pfad abrufen
Wie der Funktion DevelMailLog::getOutputDirectory()
public function getOutputDirectory() {
return variable_get('devel_debug_mail_directory', 'temporary://devel-mails');
}
?>
zu entnehmen ist, werden die protokollierten E-Mails in das in der Drupal Variablen "devel_debug_mail_directory" festgelegte Verzeichnis geschrieben. Diese Variable könnt ihr entweder individuell anpassen (mit Programmierkenntnissen) oder ihr ruft die Log-Dateien nun einfach aus Eurem temporären Verzeichnis ab (welches ihr unter "Dateisystem" in der Drupal Konfiguration festgelegt habt).
Dort wird für jede protokollierte E-Mail eine eigene Log-Datei im Verzeichnis "devel-mails" angelegt.
Das war's! :)
Nicht vergessen die Einstellung zum Go-Live wieder anzupassen oder direkt dynamisch anhand des environments zu lösen.