Moin Moin!
Net::Smtp ist im Prinzip ein sehr dünner Wrapper, der das Herstellen und Befeuern einer TCP-Verbindung zum Mailserver etwas erleichtert. Man muss für die korrekte aber genaue Kenntnis vom SMTP-Protokoll haben, und kann nicht einfach so die Methoden für z.B. Mailempfänger und Absender in beliebiger Reihenfolge verwenden. Bzw: Können kann man es natürlich schon, die Frage ist, ob das laut SMTP-Standard auch erlaubt ist. Unendliche Beliebigkeit ist sicher nicht möglich.
[...]
Wenn ich mir im Vergleich dazu Mailklassen für PHP anschaue, sehe ich durchweg deutlich angenehmere Funktionalität integriert. Alle Bestandteile einer Mail werden von der Klasse in der Regel erst einmal vollständig gesammelt und können deshalb in beliebiger Reihenfolge hinzugefügt werden. Erst der Befehl zum Absenden der Daten sorgt dann für die Verbindungsaufnahme mit dem Mailziel - was je nach Klasse und/oder Konfiguration dann die lokale Installation des Sendmail-Befehls sein kann, oder ein SMTP-Mailserver, oder ggf. ein noch exotischeres Ziel.
Die Net::*-Module kümmern sich nur um die diversen (IP-)Protokolle. Anwendungen können darauf aufsetzen, in der Regel über eine weitere Schicht wie z.B. MIME::Lite. Daher halte ich den Vergleich von Mail-Klassen einer anderen Sprache wie PHP mit einer reinen Protokollklasse in Perl für mehr als unfair.
Wenn Du Mail-Klassen vergleichen möchtest, fang mit diesen an:
MIME::Lite kann alles, was man für Mail-Versand braucht, wahlweise über Net::SMTP oder über sendmail. Einfache OOP-API. Alte Versionen waren fürchterlich zickig bis hin zur Totalverweigerung, wenn kein sendmail-Executable gefunden wurde. Der größte Design-Fehler ist, dass MIME::Lite standardmäßig sendmail verwenden will. Mein Standard für E-Mail-sendende Programme, in aller Regel als Klasse, von der eine meiner Klassen erbt, um das Handling noch etwas zu vereinfachen oder z.B. um Templates benutzen zu können.
Mail::Sender kann ähnliches, hat aber eine etwas komplexere API.
Mail::SendEasy ist sehr einfach, eine Mail aus Text und/oder HTML, dazu wahlweise Attachments. Speicherfresser.
Mail::Builder::Simple verpackt Mail::Builder und Email::Send in eine handliche API, inklusive UTF-8, Attachments, Templates, SSL und was man sich noch so alles wünschen kann.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".