Mail als Beitrag in Blog speichern

home php

Ohne Vorwissen zur eigenen Website mit WordPress 6   -  WordPress gibt es in zwei Versionen. Sie können entweder direkt auf wordpress.com einen Blog erstellen. Oder Sie laden sich Ihre WordPress-Version von wordpress.org herunter und erstellen Ihre Website auf dem eigenen Webspace. Und wie das geht, erfahren Sie in diesem WordPress-Einsteigerbuch. Zur Seite steht Ihnen der beliebte und erfahrene Trainer Peter Müller. Seit vielen Jahren hilft er mit seinen Büchern Einsteigern beim Erstellen eigener Webseiten, ob mit HTML und CSS oder mit WordPress.

Wir sind Mitglied im Amazon.Partnernet und können mit Affiliate-Links den Betrieb der Webseite etwas unterstützen, für Sie als Leser ist das natürlich vollkommen kostenlos.

Beiträge mit PHP-Mail an die Seite senden und veröffentlichen

Beiträge via Mail veröffentlichen

Wenn das Admin-Backend des CMS nicht verwendet werden kann oder die Webseite headless betrieben wird, kann das folgende kleine PHP-Script verwendet werden, um Beiträge via E-Mail (imap) an die Webseite zu senden und automatisch zu veröffentlichen. Das Script ist speziell für die Verwendung in den CMS Yellow, Automad oder PICO gedacht, da in diesen CMS traditionelle ASCII-Dateien bzw. Flat-Files verwendet werden.

Ein Postfach anlegen

Damit die Webseite neue Beiträge empfangen kann, muss ein geheimes Mail-Postfach angelegt werden, dessen Namen niemand kennt. Zusätzlich wird es noch einen Schlüssel geben, der im Betreff die Erzeugung eines neuen Beitrags initiiert, denn es können durchaus auch mal Service-Mails des Providers eintrudeln die herausgefiltert werden müssen.

Der Code

Der Code ist zunächst so aufgebaut, das er eine besondere Signatur als Betreff zwingend erwartet. Die Betreff-Zeile muss mit einem Schlüsselbegriff beginnen, gefolgt vom Dateinamen des neu zu erstellenden Post, in etwa so:

#key;das-ist-der-neue-beitrag.md

Code

Der Schlüssel dient dazu, eventuelle Service-Mails oder Mail-Werbung des Providers herauszufiltern, um dadurch zu verhindern, das bei jeder SPAM-Mail ein Beitrag erzeugt wird. Im Body der Nachricht, wird dann der eigentliche Content als Markdown-Text verfasst.

$server   = '{imap.provider.de:143}INBOX';    // bitte anpassen
$adresse  = 'geheimes@postfach.de';           // bitte anpassen
$password = 'das-kennwort';                   // bitte anpassen
$mailbox  = imap_open($server, $adresse, $password, CL_EXPUNGE);
$emails   = imap_search($mailbox, 'UNSEEN '); // ungelesene Mails

foreach ($emails as $m) {
    $header    = imap_headerinfo($mailbox, $m);
    $message   = imap_fetchbody($mailbox, $m, 1);
    $structure = imap_fetchstructure($mailbox, $m);

    $part = $structure->parts[1]; // Kodierung ermitteln

    if($part->encoding == 3) {
        $message = imap_base64($message);
    } else if($part->encoding == 1) {
        $message = imap_8bit($message);
    } else {
        $message = imap_qprint($message);
    }

    $keyword = explode(";", imap_utf8($header->subject))[0];
    $post    = explode(";", imap_utf8($header->subject))[1];

    if ($keyword == "#key") {
        echo 'Job verarbeitet: '.$post_name;
        file_put_contents($post, mb_convert_encoding(
            $message, 
            'UTF-8', 
            'Windows-1252'));
    }
}

imap_expunge($mailbox); // Verbindung beenden
imap_close($mailbox);  // Postfach schliessen

Code

Der wichtigste Bestandteil des kleinen Scripts ist die Decodierung der Zeichentabelle mittels mb_convert_encoding(), da Mails meist von Windwos-Rechnern erstellt werden und diese in das UTF-8 Format konvertiert werden müssen, damit Sonderlaute korrekt angezeigt werden können. Weitere Besonderheit ist die Decodierung mit imap_base64(), imap_8bit() und imap_qprint().

Script automatisiert einbinden

Das Script kann in die index.php einkopiert werden oder mittels include() dazugeladen werden, es wird dann bei jedem Aufruf der Domain ausgeführt und veröffentlicht Beiträge aus dem Mail-Postfach.

Alternativ kann auch mit $header->fromaddress die Mail-Adresse des Senders abgefragt werden, um den Zugriff auf bestimmte, bekannte Mailadressen zu gewähren, etwa so:

if($header->fromaddress == "mail@domain.de") {
    // erlaubte Verarbeitung
    ...
    ...
}

Code

Die Verarbeitung neuer Beiträge durch ein Mail-Programm ist recht simpel implementiert, jedoch sollte bedacht werden, das dies unter Umständen ein Risiko für die Webseite eröffnet. Zudem löscht das Script keine alten Mails aus dem Postkorb, dies muss der Besitzer selbst erledigen.

Es ist zu beachten, das viele Mailprogramme lange Zeilen ab 70 Zeichen umbrechen, zwar ist dies für den Absatztext nicht tragisch, jedoch für Title und Description.


 28.01.2024    Kontakt@Oliver-Lohse.de    Mail

COBOL - Altsysteme warten und erweitern. Das umfassende Praxis-Handbuch   -  Dieses Buch richtet sich an erfahrene Entwickler objektorientierter Sprachen wie C++ oder Java. Es vermittelt die Funktionsweise der Programmiersprache COBOL, um die in zahlreichen Implementierungen auf unterschiedlichen Plattformen immer noch produktiv laufenden COBOL-Programme zu verstehen, zu warten und bei Bedarf mit zusätzlichen Funktionalitäten zu erweitern. Dafür bietet es Ihnen sowohl eine grundlegende Einführung in die Programmierung mit COBOL als auch eine thematisch gegliederte Referenz der Befehle mit praktischen Beispielen.

Wir sind Mitglied im Amazon.Partnernet und können mit Affiliate-Links den Betrieb der Webseite etwas unterstützen, für Sie als Leser ist das natürlich vollkommen kostenlos.

Weitere passende Beiträge

eMail mit sendMail() aus PHP versenden

 php  Mail


Mit diesem kleinen Script realisieren Sie einen Mailversandt mit Standard PHP und einer Sperrliste die den Versand abbricht wenn Sperrworte enthalten sind.

Einfacher SPAM Schutz im Kontaktformular

 bludit  Spam Sicherheit Mail Kontakt Formular


Wenn Sie das Bludit-Plugin Contact3 nutzen, können Sie in diesem Plugin eine einfache und wirkungsvolle Blackliste einbauen, die den Inhalt Ihrer Mail prüft

E-Mail lesen auswerten und löschen

 php  Mail


Mit diesem PHP Script lesen Sie eine Mail in Ihrem Postfach, werten den Inhalt mittels PHP aus und löschen im Anschluss die Mail aus dem Posteingang mit PHP.

Contact3 Mailformular Hook einbinden

 bludit  Contact Mail Kontakt Formular


Blenden Sie das Kontaktformular Plugin Contact3 immer oben auf der Kontaktseite ein. Durch die Änderung des so genannten Hook ist dies einfach möglich.

Impressum


CMSWorkbench.de ist eine reine Entwickler-Webseite und dient vorwiegend als Wissensspeicher für die Entwicklung von CMS

Datenschutz


Die Webseite verwendet keinerlei Tracking- oder Speicher-Mechanismen, die Rückschlüsse auf Ihre IP oder das Leseverhalten zulassen

Affiliate


Wir sind Mitglied im Amazon Partnernet und können mit Affiliate-Links (* den Betrieb der Seite etwas unterstützen, für Sie ist das natürlich kostenlos

Kontakt


Sie können mit uns über eMail Kontakt aufnehmen, schreiben Sie an Kontakt@Oliver-Lohse.de