2009-12-10 23 views
10

eine einfache Frage: Welche hat gute Leistung für das Senden von Mails in großen Mengen?PHP: mail() vs SendMail

mail() Funktion oder send

, die eine nach der beliebten PHP-List-Manager-Pakete verwendet wird?

Antwort

10

Nun die mail() Funktion ist nicht wirklich geeignet für E-Mails in großen Mengen gesendet, weil es öffnet und schließt einen SMTP-Socket für jede E-Mail, die Sie senden, die bei weitem nicht effizient ist. Wenn Sie PEAR::Mail betrachten, können Sie 3 Backends verwenden: mail, sendmail und plain SMTP. Für das, was es wert ist, habe ich persönlich SMTP bevorzugt, weil es sowohl unter Linux als auch unter Windows einfach zu unterstützen ist.

Wenn Sie E-Mails im Hintergrund über eine Warteschlange senden möchten, könnte PEAR::Mail_Queue eine Lösung sein.

7

sendmail ist ein Mail Transfer Agent (MTA). Auf UNIX- und Linux-basierten Systemen leitet die PHP-Funktion mail() die E-Mail einfach über sendmail (oder einen kompatiblen MTA) weiter. Für das Senden von Massen-E-Mails möchten Sie möglicherweise direkt eine Verbindung mit einem SMTP-Server herstellen. Zend Framework bietet eine .

+0

Danke für die Ausarbeitung von send-mail, besonders unter Unix und Linux. Wie geht Windows damit um? – Newb

3

Wenn Sie den SMTP-Mailserver selbst ausführen, stellen Sie sicher, dass Sie SPF und domain keys richtig eingerichtet haben oder Ihre E-Mail in der Junk-Box für die meisten großen Domains (Yahoo, Google Mail usw.) landen wird.

Vergessen Sie auch nicht die Bounce-Handhabung und die robuste Abmeldefunktion. Ohne diese werden Ihre E-Mail-Nachrichten viel weniger effektiv sein und Ihre IP wird blacklisted bekommen.

Und natürlich nicht zulassen open relays. Mach deine Hausaufgaben und sei vorsichtig, Spammer haben es uns schwer gemacht.