Blog-Beitrag mit PHP-Mail an die Webseite senden

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

Juli 5, 2023 - Lesezeit: 3 Minuten

Inhalt

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

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

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
    ...
    ...
}

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.

Schlagworte:

Mail

Beiträge in der Kategorie "PHP":

Wie können Sie Programm Kommentare in json Dateien und Files vornehmen? Gibt es einen Kommentar-Token oder einen anderen Trick um in json zu kommentieren?

Sie können mit PHP ein Verzeichnis mit Ordnern und Dateien einlesen und anzeigen. Der Beitrag zeigt ein kurzes Codesegment mit dem opendir() Befehl aus PHP.

Mit diesem Beitrag erstellen Sie (oder als Download) eine unabhängige Affiliate Datenbank, die Sie in jedem CMS, jeder Webseite oder jedem Blog nutzen können.

Die Formularverarbeitung durch PHP ist der beliebteste Standard im Web. Nutzen Sie ein intelligentes Design, können Sie sich viel Arbeit und Stress ersparen.

Möchten Sie einen Log-Mechanismus entwickeln den Sie leicht in jedes PICO Template einbinden können, dann ist JavaScript und PHP ideal dafür.

Das Auflösen mehrdimensionaler Arrays ist in PHP sehr sperrig, daher in diesem Beitrag ein einfaches diskretes Design-Pattern, für die Auflösung von Arrays

Die kleinste PHP-Template-Engine bzw kleinste PHP-Template-Parser, der mit Heredoc Syntax arbeitet. Die Heredoc Syntax ist ideal für kleine Prototypen.

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

In diesem Beitrag können Sie eine kleine FlatFile Projekt Datenbank herunterladen. Eine Beispielimplementierung in Anlehnung an die FlatFileDB von H.Wiledal

Sie möchten einen alten Artikel aus dem Google-Index entfernen dann sollten Sie vorher diesen Beitrag lesen

Dieser Beitrag zeigt einen Heredoc Template Parser und mini CMS, erstellt in PHP, unter Nutzung der Heredoc-Syntax. Content, Template und Parser in einer Datei.

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.

Möchten Sie große Mengen Content verwalten und systematisch organisieren oder entwickeln ein eigenes Flatfile CMS, dann hilft die Flatfile DB von Hugo Wiledal

Das ist die kleinste PHP Template-Engine, bzw. das kleinste PHP-CMS der Welt, erstellt mit der Programmiersprache PHP und 7 Zeilen Code.

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

Kategorien

Automad

Das kostenlose Flat File CMS Automad bietet bereits nach der Installation auf dem Server das beste Layout unter allen CMS am Markt.

Bludit

Das kostenlose Flatfile CMS Bludit ist das beliebteste Content Management System, das dem großen WordPress sehr nahe kommt, jedoch deutlich mehr Sicherheit bietet.

CMS

In dieser Rubrik geht es um übergreifenden Themen aus dem Bereich der Content Management Systeme.

Coast

Coast ist ein CMS aus deutscher Feder und ist mit einem exzellenten HTML/PHP Frontend-Editor zu vergleichen, die Daten werden direkt in der HTML-Datei gespeichert.

GetSimple

Das kostenlose Content Management System GetSimple verspricht genau das, was der Name andeutet, ein stabiles Flat File CMS auf der Basis von XML-Dateien.

GRAV

Das kostenlose Content Management System GRAV gehört zu den komplexesten CMS, da es den größten Funktionsumfang mitbringt.

Handlebars.JS

Handlebars.js ist eine kostenlose JavaScript Template-Engine mit der einfache Webseiten oder Prototypen leicht und schnell erzeugt werden können.

htaccess

Die .htaccess ist die wohl wichtigste und mächtigste Datei, über die der Server seinen Umgang mit den Daten und Besuchern steuert.

Java

Java ist die strategische Programmiersprache für verteilte Anwendungen im Internet oder auch in der Client-Server Architektur und sogar auf dem Host.

Monstra

Das CMS Monstra ist ein überaus gelungenes und sauber entwickeltes CMS mit Admin-Backend und Flat File Datenbank.

PHP

PHP ist die strategische Programmiersprache des Internets, mit PHP geht alles und ohne PHP nichts! Allerdings ist PHP nicht auf lokalen Client-Umgebungen verbreitet (aber möglich).

Pico

Das CMS Pico ist derzeit das ausgereifteste und einfachste headless CMS für den Einsatz großer Mengen an MarkDown-Files (Content).

Smarty

Smarty ist eine Template-Engine auf Basis der Programmiersprache PHP und ist in der Lage HTML-Vorlagen (Templates) dynamisch mit Content zu versorgen.

Typemill

Typemill ist zunächst ein ganz normales Flat File CMS, entfaltet jedoch sein wahres Potenzial mit einigen besonderen Plugins, die es zum kraftvollen Publishing-Tool macht.

WonderCMS

WonderCMS ist das mit Abstand kleinste CMS das es derzeit kostenlos gibt. WonderCMS kommt mit einem PHP-Script und einer JSON-Datenbank aus und bietet ein Backend.

WordPress

Das datenbankbasierte Content Management System WordPress ist das beliebteste CMS und hält die meisten Installationen - ist allerdings auch das am meisten attackierte System.

Contact3 Hooks das Bludit CMS Mailformular einbinden

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

E-Mail mit PHP lesen, mit PHP auswerten und im Posteingang löschen

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.

Eine eMail mit sendMail() automatisch aus PHP versenden

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 für Bludit CMS

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