2009-08-20 5 views
0

Ich möchte einen E-Mail-Transfer-Dienst schreiben und benötigen eine MTU-Ersatz von sendmail/postfix.Gibt es eine SMTP-Mail-Übertragungsbibliothek in PHP

Ich suche nicht, wie an einen sendenden SMTP-Server zu liefern (wie eine Postfix-Auflistung an einem SMTP-Port). Ich brauche auch nicht den empfangenden Teil des Servers, Bounces etc. würde zu einem anderen existierenden Postfix gehen.

Alles in reinem PHP. SMTP ist ein ziemlich einfaches Protokoll, aber dies würde den Zugriff auf den MX-DNS-Datensatz und andere Details erfordern, die erledigt werden müssen.

Warum brauche ich das? Weil die meisten geteilten Internet-Provider wahnsinnig niedrige Grenzen für das Senden von E-Mails wie 500 pro Tag haben. Das ist fast nichts, wenn Sie sogar die E-Mail-Liste mit dem niedrigsten Traffic einrichten möchten.

BEARBEITEN: Bitte beachten Sie: Der Code muss eine Verbindung zum SMTP-Server des Empfängers herstellen und die Nachricht mit einem angepassten Header-Satz liefern (entfernte BCC-Liste, hinzugefügte Pfadroute). Wenn Sie eine SMTP-Klasse von weniger als 5000 Zeilen sehen oder wenn Sie einen SMTP-Host und einen Port konfigurieren müssen, dann ist dies nicht das, wonach ich suche.

Es muss alles tun, was sendmail als PHP-Bibliothek tut.

+0

Ich bezweifle, PHP alleine würde den Job erledigen, Sie brauchen MX-Datensätze und was nicht. –

Antwort

1

Ich benutze Pear's Mail Klasse zu tun.

EDIT

Danach erneut zu lesen, sehe ich dort, es ist mehr als nur eine Bibliothek. Sie möchten direkt zum entfernten MX senden.

Warum das Rad neu erfinden? Richten Sie eine Postfix-Instanz auf dem Server ein, der nur Verbindungen vom Webserver abhört ... und lassen Sie einen MTA das tun, was er am besten kann. Gib die Nachrichten von php an einen echten Mailserver weiter und gehe weiter.

Bei ISPs, die den ausgehenden Port 25 blockieren und die Verwendung eines Smarthosts erzwingen, können Sie damit auch die Rate der an den Smarthost gesendeten Nachrichten einschränken.

Schließlich, Senden direkt an das Ende MX von Ihrem PHP-Skript ist eine schlechte Idee, denn wenn Sie mir senden, werde ich es nie bekommen. Ich und viele andere Websites verwenden "Greylisting", um Spam zu reduzieren, wodurch alle anfänglichen Anfragen mit einem vorübergehenden Fehler von 450 abgelehnt werden. Echte MTAs versuchen es erneut. Wenn Sie jedoch keine Verzögerungswarteschlange implementiert haben und es erneut versuchen, wird Ihre Nachricht niemals ausgeführt.

+0

Nein, auch nur ein SMTP-Client, aber kein SMTP-Mail-Transfer-Agent – Lothar

+0

Eine Verzögerungsqueue ist natürlich auf der Feature-Liste. Bevor ich Ihre Antwort gelesen habe, war es nur für Zuverlässigkeit und Leistung (mehrere MX-Lookups). Die Antwort von warum ist, dass viele Leute nur einen PHP-Account haben oder sie nicht Postfix installieren können (oder nicht für den hohen Speicherbedarf auf einem billigen VPS) wie ich wollen - übrigens nicht installiere Postfix als nicht root. Diese Unix E-Mail MTU's saugen so sehr. Und eine 500 E-Mails pro Tag auf einem ansonsten guten Webspace-Anbieter ist ein Showstopper für eine Mailing-Liste. Ich fragte, warum er das Limit nicht erhöhen möchte, aber er will nicht. – Lothar

+0

Nun, Sie können immer noch Pears Net_SMTP verwenden, um die Verbindungen herzustellen, und wahrscheinlich ein Pear-Modul, um den MX-Datensatz nachzuschlagen. Dann können Sie den Rückgabecode des Zustellversuchs überprüfen und die Nachricht selbst zwischenspeichern, wenn Sie einen 4xx-Fehler erhalten. – DGM

0

Testen Sie die Zend Framework Komponente Zend_Mail (Sie können die Komponente unabhängig vom gesamten Framework verwenden).

+0

Dies ist keine MTU-Implementierung. Es liefert die E-Mail an Ihren SMTP-Server, aber nicht an den SMTP-Server des Empfängers. – Lothar

1

SwiftMailer ist die einzige Bibliothek, die Sie benötigen.

+0

Nein, auch nur ein SMTP-Client, aber kein SMTP-Mail-Transfer-Agent – Lothar

+0

Oh, tut mir leid, ich habe die ganze Frage nicht gelesen. Ich kenne keine MTA-Implementierung in PHP, sorry. = \ –

+0

Ich denke, du hast Recht. Nach 2 Tagen intensiver Suche habe ich nur ein kommerzielles Produkt gefunden, das Sie auf Ihrer Seite installieren können, um einen kompletten Email-Service inklusive SMTP-Server wie php cron jobs einzurichten. Aber die wichtigsten Teile wie MX-Datensatz-Abfrage ist in grundlegenden PHP verfügbar Ich denke, es ist Zeit, ein System auf eigene Faust zu schreiben. – Lothar

0

Hier ist etwas, was ich geschrieben habe. Es ist ziemlich minimal und ich weiß nicht, wie gut es funktioniert, aber ich habe es mit der Absicht geschrieben, sendmail zu ersetzen, was bedeutet, dass es eine Nachricht braucht, alle MX-Records nach den Empfängerdomänen durchsucht, diese Mailserver kontaktiert und einen liefert Nachricht für die entsprechenden Empfänger. Es hat mir damals gut genug geklappt.

https://github.com/denvertimothy/ThriveSMTP

Es ist eine lange Zeit her ist, seit ich es benutzt habe, aber ich warf es jetzt nur noch auf Github auf.

0

Ich verwendete http://www.mailerq.com/, die cool funktioniert. Es ist ein Warteschlangen-basierter Mail-Transfer-Agent. Es erfordert Kaninchenmq. Es bietet mehrere Arbeiter als auch einfach in der Datenbank zu speichern. Es bietet auch Management-Konsole. lohnt sich, es zu überprüfen

Verwandte Themen