Suche

Domain-Check

Mein
Merkzettel





zum Merkzettel
Zertifizierung nach DIN EN ISO 9001:2008 und DIN EN ISO 14001
Microsoft Gold Certified Partner

Was man nicht im Kopf hat,
hat man in der Datenbank.

Es geht nicht immer darum alles zu wissen,
sondern zu wissen, wo es steht.

MAIL00001 - Perl: E-Mails per ActivePerl versenden

Die Nutzung eines 'sendmail'-ähnlichen Befehls unter Windows unterscheidet sich ein wenig von der Sendmail-Portierung unter Linux, denn Windows kennt keinen eigenen ‚sendmail'-Befehl.

Im Folgenden finden Sie eine Anleitung, wie man die aus Unix und Linux bekannte sendmail-Funktion unter Windows in Ihrer Funktionsweise replizieren kann (auch abrufbar unter http://aspn.activestate.com/ASPN/docs/ActivePerl/faq/Windows/ActivePerl-Winfaq4.html; allerdings nur in englischer Sprache):

 

Wie verschicke ich E-Mail per ActivePerl?

Im Laufe der Zeit wird man als Webadministrator Skripten begegnen, die E-Mail mit externen Mailprogrammen verschicken, z.B.:

 

open(MAIL, '| /usr/lib/sendmail user@there.com') or "die"; print MAIL < To: user@there.com From: user@here.com Hello, World! EOF

 

Diese Art von Skript führt bei den Autoren von Websites häufig zu der Frage, ob es ein Windows-Äquivalent zum ‚sendmail'-Befehl auch unter dem Microsoft-Betriebssystem gibt - die Antwort lautet: ja, aber keine, die in Windows integriert ist. Dafür brauchen Sie also Perl.

Wenn Sie E-Mail aus einem Perl-Skrips heraus verschicken möchten, benötigen sie kein externes Programm wie etwa ‚sendmail' - das libnet-Bundle enthält Net::SMTP - ein Modul, welches zum Mailversand benutzt werden kann.

 

Hier ein Beispiel:
 

 

use Net::SMTP;
$smtp = Net::SMTP->new('here.com'); # Verbindung mit einem SMTP-Server
$smtp->mail( 'user@here.com' ); # Setzen Sie hier die Adresse des Absenders ein
$smtp->to('user@there.com'); # Empfängeradresse
$smtp->data(); # Beginn des Mailvorgangs

# Sende den Header.
$smtp->datasend("To: datasend("From'>user@there.com\n>user@there.com\n"");$smtp->datasend("From'>user@there.com\n");
$smtp->datasend("From: user@here.com\n");
$smtp->datasend("\n"); # Sende den Textkörper.
$smtp->datasend("Hello, World!\n");
$smtp->dataend(); # Endes des Mailvorgangs
$smtp->quit; # schließt die SMTP-Verbindung

 

 

Eine weitere Alternative wäre ‚Mail::Sender', welche folgendermaßen verwendet wird:
 

 

use Mail::Sender;
$sender = new Mail::Sender {smtp => 'mail.yourdomain.com', from => 'your@address.com'};
$sender->MailFile({to => 'some@address.com', subject => 'Here is the file',
msg => "I'm sending you the list you wanted.",
file => 'filename.txt'});

 

 

Die dritte Möglichkeit wäre ‚Mail::Sendmail', welches so eingebunden werden muss:
 

 

<code>use Mail::Sendmail;
%mail = ( To => 'you@there.com',
From => 'me@here.com',
Message => "This is a minimalistic message"
);
if (sendmail %mail) { print "Mail sent OK.\n" }
else { print "Error sending mail: $Mail::Sendmail::error \n" }</code>