Weiterleiten von E-Mails mit einem PHP-Skript

8

Wir haben ein cronisiertes PHP-Skript, das alle zehn Minuten einen Posteingang überprüft. Der Zweck dieses Skripts besteht darin, die Funktion "STOPP to quit" für den von uns bereitgestellten SMS-Benachrichtigungsdienst zu verarbeiten. Wenn das Skript am Anfang der E-Mail E-Mails mit dem Wort "STOP" findet, entfernen wir den Benutzer aus unserer Benachrichtigungsdatenbank.

Um unsere Grundlagen abzudecken, möchten wir, dass alle E-Mails, die die oben genannten Kriterien nicht erfüllen, an eine andere E-Mail-Adresse (ein Alias) weitergeleitet werden, die mehrere Personen stündlich erhalten und überprüfen. Es kommt jedoch zu Problemen beim Weiterleiten der E-Mails von diesem PHP-Skript.

Wenn wir wissen, wie die mail -Funktion von PHP funktioniert, ist es ziemlich offensichtlich, dass wir die Header vor dem Mailing wieder einfügen müssen. MIME-Multipart-E-Mails werden jedoch immer als Textfetzen gesendet, einschließlich der Barrieren und aller base64-kodierten Anhänge.

Kennt jemand eine einfache Möglichkeit, eine E-Mail-Nachricht zu übernehmen und sie mit einem PHP-Skript richtig weiterzuleiten?

Wir verwenden die nativen IMAP-Funktionen, die in PHP 5 integriert sind. Wir haben auch Zugriff auf das Modul PEAR Mail. Allerdings konnten wir bei der Suche nach Google keine Beispiele oder Personen finden, die ähnliche Aufgaben ausführen.

    
Michael Irigoyen 21.12.2010, 21:17
quelle

5 Antworten

6

Ich habe diese Methode vor langer Zeit programmiert, um eine E-Mail-Nachricht mit IMAP in die entsprechenden Teile zu parsen:

%Vor%

Ich habe es nie gründlich getestet und bin sicher, dass es einige Bugs hat, aber es könnte ein Anfang sein ... Nach der Anpassung dieses Codes sollten Sie die $result Indizes verwenden können ( text , html , attachments ) mit Ihrem Weiterleitungs-Skript (z. B. mit SwiftMailer), ohne sich darum zu kümmern, die MIME-Grenzen intakt zu halten.

    
Alix Axel 10.01.2011, 22:55
quelle
4

Dies ist nicht wirklich eine Antwort, sondern ein Vorschlag für eine alternative Methode. Ich denke, es wäre viel einfacher und weniger fehleranfällig (d. H. Keine Zustellungsprobleme), wenn Sie die Nachrichten einfach in verschiedene Ordner innerhalb des bestehenden Kontos verschieben. Das heißt, der Cron wird ausgeführt und verarbeitet alle E-Mails in INBOX. Wenn STOP gefunden wird, führt es die erforderliche Arbeit aus und dann (via IMAP-Funktionen) verschiebt es die E-Mail einfach in einen Unterordner namens "Processed" o.ä. Andernfalls wird die E-Mail in einen Unterordner mit dem Namen "Check These" oder ähnlich verschoben. Dann müssen Sie sich keine Gedanken über die Weiterleitung oder weitere Lieferungen oder ein zweites Konto machen, und jeder kann die bearbeiteten, unverarbeiteten und ausstehenden E-Mails direkt überwachen.

    
Alex Howansky 21.12.2010 21:28
quelle
1

Haben Sie sich die Funktionalität mit der Bibliothek Swiftmailer angesehen?

Ссылка

Ich habe das in der Vergangenheit benutzt und gute Ergebnisse erzielt, aber nicht in einer Anwendung, wie Sie sie beschrieben haben. Ich habe sie jedoch für PHP-basierte "Mailing-Listen" verwendet, wo ich nach Themen suchte und zur richtigen Gruppe schickte / p>

Aber ich habe eine neue Nachricht erstellt, nicht weitergeleitet. Hoffe das hilft.

    
Jakub 21.12.2010 21:22
quelle
1

Das ist mir schon einmal passiert. Um es zu beheben, musste ich einen imap_base64 () für den Text der Email machen, nachdem ich imap_fetchbody () benutzt hatte.

%Vor%     
jb1785 21.12.2010 21:34
quelle
0

Verwenden Sie einen IO-Handler, um den Inhalt der E-Mail als Zeichenfolge zu erfassen, teilen Sie die Header aus und verwenden Sie dann die Funktion php 'mail ()', um sie zu senden.

Sonst wenn du das wirklich mit php-imap machen willst,

Die Erweiterung php-imap ist libc-client, das Teil der pine-E-Mail-Client-Software ist Finde die manuellen Schritte heraus, die nötig sind, um es mit pine zu machen, und schau dir dann die c-client-Anrufe an, die pine macht, um es zu tun. das wird dir die notwendigen Schritte in PHP geben.

Die c-client-Dokumentation ist ziemlich minimal, der Zugriff auf die pine-Quelle ist der beste Weg, Nutzungsdetails abzurufen.

Ich denke, Sie können feststellen, dass der Autor der PHP-Erweiterung "für Ihre Bequemlichkeit oder Ihren Schutz" weggelassen oder Dinge geändert hat, die diesen Pfad blockieren.

    
Jasen 10.10.2014 02:12
quelle

Tags und Links