Beiträge in Drupal per E-Mail erstellen

Beiträge in Drupal per E-Mail erstellen

Der übliche Weg, um auf einer Drupalseite Inhalte zu veröffentlichen, d.h. eine Node zu erstellen oder einen Kommentar zu schreiben, ist nicht immer der optimale. Es gibt durchaus Anwendungsfälle, wo man auf anderen Wegen Inhalte auf seine Webseite stellen möchte. Ein solcher Weg kann das Posten per E-Mail sein.


In einem konkreten Anwendungsfall ging es darum, für eine Firmen-Intranet-Seite ein projektbezogenes E-Mail-Archiv anzulegen. Darin sollen alle Mails nebst Dateianhängen abgelegt werden, die an eine bestimmte Mailadresse gehen. In der Praxis muss nun jedes Projektmitglied, dass eine Mail archivieren lassen will, diese in bcc (d.h. als Blindkopie) an diese Mailadresse schicken. Ob dies später in der Praxis von allen auch beherzigt wird, wollen wir hier nicht weiter vertiefen. Wir beschränken uns darauf, die technische Umsetzung vorzustellen. Diese ist nicht ganz unkompliziert, da hierbei mehrere Drupalmodule zusammenwirken müssen. Grundlage war in diesem Fall Drupal 6.x.


Und so wird’s gemacht:


1. Diese Module von drupal.org herunterladen, installieren und aktivieren:



2.  Auf unserem Mailserver legen wir eine Mailbox an, die später die zu archivierenden Mails aufnehmen soll. Da alle dort eingehenden Mails von Mailhandler verarbeitet werden sollen, sollte diese Mailadresse möglichst kryptisch sein und nicht nach außen kommuniziert werden, also z.B. mailhandler-d5s3jxq1b@firmendomain.de.


3. Für die zu speichernden E-Mails legen wir einen neuen Inhaltstyp “Mail” an und fügen CCK-Felder hinzu, die später zusätzliche Informationen aus den E-Mails aufnehmen sollen. Zumindest ein Feld vom Typ “File” wird benötigt, um später die Mail-Attachments aufzunehmen. (Hinweis: Da eine Mail mehrere Anhängen enthalten kann, sollte das FileField keine oder eine hinreichend große Beschränkung der Zahl der Anhänge enthalten.). Weitere Felder sind nicht zwingend notwendig, aber unter Umständen sinnvoll, wenn man Informationen speichern will, die nicht in der normalen Node-Ansicht gezeigt werden sollen, um die User nicht zu verwirren - z.B. die Absender-Mailadresse, CC-Adressen oder die Größe der E-Mail.


4. Als nächstes legen wir unter “Verwalten >> Strukturierung >> Mailhandler Mailboxes” eine neue Mailhandler-Mailbox an. Der Einfachheit halber nennen wir diese so, wie sie auch auf dem Mailserver heißt “mailhandler-d5s3jxq1b” und tragen die Zugangsdaten (Username, Passwort) und Serverdaten (Domain, Mail-Protokoll, Port) ein. Mailhandler bietet für den Zugriff auf die Mailbox die Protokolle POP3 und IMAP. Wir nehmen hier IMAP, weil mit POP3 das Löschen der Mails vom Server unter Umständen nicht funktioniert und bei jedem neuen Abruf auch die bereits abgeholten E-Mails erneut abgerufen werden. Nach dem Eintragen aller Daten prüft Mailhandler automatisch, ob es auf die Mailbox zugreifen kann und liefert im Erfolgsfall die Meldung “Mailhandler was able to connect to the mailbox.”. Kommt eine Fehlermeldung, sollte man noch einmal die Mailbox-Daten prüfen. Meistens ist es ein Tippfehler im Passwort oder ein falscher Port für den Mailserver (Achtung: ändert man das Protoll von POP3 auf IMAP, wird der Port nicht automatisch geändert!), die den Zugriff verhindern.


5. Jetzt legen wir einen neuen Inhaltstypen an, den wir z.B.  “Mailhandler Ressource” nennen. Er dient später als Verbindung zum Feed-Importer des Feeds-Modul.


6. Als nächstes legen wir unter “Verwalten >> Strukturierung >> Feed importers” einen neuen Feed-Importer an. Auf der folgenden Seite “Basiseinstellungen” nehmen wir diese Einstellungen vor:


a) Unter “Attached to:” verknüpfen wir den Feed Importer mit unserem neuen Inhaltstypen “Mailhandler Ressource” [Bild drupal6-mailhandler-feeds-konfiguration-1.jpg]


Einstellungen des Feed-Importers - Mailhandler in Drupal



b) Unter “Fetcher >> Ändern” stellen wir auf “Mailhandler fetcher” um (einfach rechts auf “Auswahl” klicken)



c) Unter “Mailhandler fetcher >> Einstellungen” lassen wir den Message filter auf “All” stehen.


c) Unter “Parser >>Ändern” klicken wir auf den Auswahl-Link neben “Mailhandler IMAP stream parser”


d) Unter “Mailhandler IMAP stream parser >> Einstellungen“ sollten alle Command Plugins ausgewählt sein


e) Unter “Processor >> Ändern” wählen wir “Node Processor”


f) Unter “Node processor >> Einstellungen” wählen wir jetzt den Inhaltstyp “Mail” (wir wollen ja aus jeder Mail eine neue Node vom Typ “Mail” erzeugen), wählen ein Eingabeformat (z.B. Filtered HTML) und den User der als Node-Autor eingetragen werden soll.


g) Zum Abschluss müssen wir noch die Felder die der Feed bereitstellt den Feldern des Inhaltstypen “Mail” zuordnen. Wichtig ist dabei, dass es mindestenseine eindeutige 1:1-Zuordnung zwischen zwei Feldern gibt. Dies kann z.B. das Mail-Subject sein, das wir dem Node-Titel zuordnen.


Konfiguration der Felder des Feed - Mailhandler in Drupal


Den Mail-Body ordnen wir dem Feld Node-Body zu, das Maildatum dem Node-Published-Date und die Mail-Attachments dem CCK-File-Field, das wir dafür angelegt haben. Wer weitere CCK-Felder angelegt hat, kann diese jetzt den jeweiligen Feed-Feldern zuordnen. Dabei können auch mehrere Feed-Felder einem CCK-Feld zugeordnet werden.


7. Nach dem Anlegen eines Feed importer legen wir jetzt eine Node vom Typ “Mailhandler Ressource” an und verknüpfen diese unter “Newsfeed” mit unserer Mailhandler Mailbox.


Mailhandler Ressource in Drupal anlegen


Jetzt ist die Zeit für einen ersten Test gekommen. Dazu schicken wir eine E-Mail an unserer Mailhandler-Mailbox. Anschließend klicken wir auf den Tab “Importieren” unserer soeben angelegten Mailhandler-Ressource. Bestätigen auf der Folgeseite mit einem Klick auf den “Importieren”-Button und wenn alles stimmt meldet Drupal uns, dass es eine neue Node angelegt hat. Diese enthält jetzt die komplette E-Mail, nebst Anhängen.

Und so sieht das dann auf der Webseite aus:
Mit dem Mailhandler in Drupal importierte E-Mail

Später müssen wir den Import natürlich nicht mehr händisch anstoßen. Er findet bei jedem Aufruf der cron.php automatisch statt.


Noch eine Bemerkung zum Thema Sicherheit: Mailhandler legt für jede E-Mail, die in unsere eigens dafür angelegte Mailbox eingeht in einer Node ab. Eine Prüfung, ob es sich ggf. um eine unerwünschte Mail mit Spam oder gar Schadcode handelt, findet nicht statt. Es empfiehlt sich daher “Filtered HTML” einzustellen.