Moin!
Das zweite Problem:
smtp->auth, wenn AUTHEN::SASL installiert ist, bringt keine verschlüsselte Passwortübertragung, wenn das der Server nicht unterstützt.
Naja, wie willst du das auch umgehen? Technisch unmöglich, selbst mit Perl. :)
In einem praktischen Test hat smtp->auth gerade mal die identisch Base64 kodierung angewendet, de ich in meinem Eingangsposting erwähnte.
Was auf rein technischer Ebene ja wohl korrekt ist.
Zwischenfazit:
Net::Smtp ist frustrierend. Man bekommt nicht einmal informative true Werte zurück.
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.
Und auch das eigentliche Versenden des Mailtextes ist eher als rudimentär anzusehen. Net::Smtp gibt keine Hilfestellung, um beispielsweise die bereits einmal an das Modul übergebenen Mailadressen für Sender und Empfänger an dieser Stelle simpel zu wiederholen. Ebenso ist die korrekte Kodierung von Mailadressen bzw. weiteren Mail-Header-Zeilen in keinster Weise hilfreich unterstützt.
Die Verwendung dieses Moduls bedeutet also im Prinzip nur eine sehr geringe Erleichterung im Vergleich zum direkten Öffnen eines rohen TCP-Kanals.
Allerdings ist das Wrappen ggf. nicht ganz so schlecht, denn Net::Smtp baut auf Net::Cmd auf, und das hat ein paar Methoden, um die Serverantwort auszuwerten. Beispielsweise message(), code() und ok().
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.
- Sven Rautenberg