HTML-Emails mit alternativem Text versenden
|
Seitenanfang |
| Hallo! Ich hänge bei einem Problem. Ich möchte gerne HTML-Emails verschicken, was soweit sehr gut klappt. Es gibt allerdings einige Mailanbieter (zB. uboot.com) die keine HTML-Mails anzeigen. Ich habe ein bischen gegoggelt und es gibt angeblich eine Möglichkeit, eine E-Mail mit 2 Teilen zu verschicken; einem HTML-Teil und einem Text-Teil. Je nachdem wie der Empfänger seinen Email-Client eingestellt hat (Empfangsformat) wird entweder die HTML oder wenn diese nicht funktioniert die Text-Version angezeigt. Weis jemand wie man das Mail da codieren muss bzw. wie das geht? mfg, Perler
Datum: 22.03.2007-10:36

|
re: HTML-Emails mit alternativem Text versenden
|
Seitenanfang |
Du musst eine sogenannte Multipart-Message erzeugen, mit MIME::Lite funktioniert das in etwa so:
$msg = MIME::Lite->new( From => 'me@myhost.com', To => 'you@yourhost.com', Cc => 'some@other.com, some@more.com', Subject => 'Nachricht mit HTML und TEXT', Type => 'multipart/mixed' ); $msg->attach(Type => 'TEXT', Data => 'Purer Text' ); $msg->attach(Type => 'text/html', Data => '<body><h1>Der HTML-Teil</h1></body>' ); $msg->send();
Code ist on-the-fly geschrieben und ungetestet, soll nur die Problemlösung skizzieren.
Datum: 22.03.2007-18:32

|
re: HTML-Emails mit alternativem Text versenden
|
Seitenanfang |
| Ich arbeite mit Net::SMTP da nicht der Server die Mail verarbeitet sondern ein anderer. Gibts dafür auch eine Lösung?
Datum: 22.03.2007-22:33

|
re: HTML-Emails mit alternativem Text versenden
|
Seitenanfang |
| Für Net::SMTP gibt es Net::SMTP::Multipart das erfüllt aber nicht die Erwartungen, damit lässt sich nur eine Datei anhängen. Du kannst auch mit MIME::Lite Nachrichten per SMTP versenden, intern verwendet es selbst auch Net::SMTP zum versenden. my $smtp_server = 'mx'; my $msg = MIME::Lite->new( # ... );$msg->send_by_smtp($smtp_server);
Die Argumente für send_by_smtp() werden direkt an die new()-Methode von Net::SMTP weitergereicht, sind also die selben.
Datum: 23.03.2007-00:03

|
re: HTML-Emails mit alternativem Text versenden
|
Seitenanfang |
| Und wenn man einen SMTP server mit Authentifizierung hat?
Datum: 23.03.2007-00:19

|
re: HTML-Emails mit alternativem Text versenden
|
Seitenanfang |
#!/usr/bin/perl use strict; use warnings; # setzte Sendemethode standardmaeszig auf SMTP (mit Auth-Daten) MIME::Lite->send('smtp','some.host', AuthUser => $user, AuthPass => $pass); my $msg = MIME::Lite->new( # ... ); $msg->send(); # sendet nun via Net::SMTP mit Auth
Als ''Notloesung'' laesst sich auch
Mail::Lite->send('sub', \&callback_funktion, @args);
verwenden, dann wird zum Senden die callback_funktion aufgerufen. Als Argument bekommt die Funktion erst die vollstaendige Nachricht, gefolgt von den angegebenen Argumenten (@args). Damit laesst sich dann alles realiseren was man benoetigt.Es lohnt sich einen Blick in die Dokumentation von MIME::Lite zu werfen.
Datum: 23.03.2007-03:38

|
re: HTML-Emails mit alternativem Text versenden
|
Seitenanfang |
| Sorry, das hab ich in der Docu übersehen. War schon spät ;-) Funktioniert leider trotzdem nicht. Ich wende das Komando so an:
$senddata->send('smtp', "mail.server.at", AuthUser => "mailacount1", AuthPass => "asdf1234", Timeout=>60);
Die Zugangsdaten stimmen 100%ig. Hab sie mit Outlook getest und da funktionierts. Muss ich die noch irgendwie codieren oder müssen die schon im Klartext an das Modul übergeben werden? Was könnte noch das Problem sein. Ich erhalte den Standardfehler bei ner falschen Atenthifizierung: "Relaying denied. Proper authentication required."
Datum: 23.03.2007-08:03

|