craano
05-12-2006, 18:50
Hallo,
ich versuche gerade mit einem Perl script einen Mail zu versenden, ich bekomme keine Fehlermeldungen, doch leider kommt keine mail bei mir an.
Zum Verständnis hier ein kurzes script wie ich vorgehe:
#!/usr/bin/perl -w
#
#
#
#
use Net::POP3;
use Net::SMTP;
$user = "USER";
$passwd = "SECRET";
$pop3Server = "mx.PROVIDER.de";
$pop3 = Net::POP3->new($pop3Server, Timeout => 60);
print "Einloggen in $pop3Server als $user ...\n";
$messagenum = $pop3->login($user,$passwd) || die "Konnte nicht in $pop3Server einloggen";
print "Sie haben $messagenum Nachrichten\n\n";
# Betreffszeilen der neuen Emails werden ausgelesen und angezeigt.
# Siehe unten für eine Erläuterung dieses Code-Blocks
for ($i=1;$i<=$messagenum ;$i++) {
$subject = $pop3->top ($i);
foreach $zeile (@$subject) {
if (index($zeile,"Subject:")>=0) {
print "Header of message $i: $zeile\n";
}
}
}
####Immer erst pop3, zur Identifizierung
$mailServer = 'mx.PROVIDER.de'; # Name des SMTP Servers. Angabe einer
# IP Adresse ist auch möglich
$nachricht = 'Testnachricht'; # Der Text der Nachricht
$absender = 'NAME@ADRESSE.de'; # Emailadresse des Absenders.
$betreff = 'Sendetest'; # Betreffszeile der Email
$empfaenger = 'AN@ADRESSE.de'; # Emailadresse des Empfängers
print "Mailserver ist : $mailServer\n"; # Name des SMTP Servers wird auf dem
# Bildschirm ausgegeben
$smtp = Net::SMTP->new($mailServer); # Ein neues SMTP Objekt wird erzeugt.
# Als Parameter wird der Name des SMTP
# Servers verlangt.
$smtp->mail($absender); # Dem SMTP Server wird der Absender
# mitgeteilt.
$smtp->to($empfaenger); # Dem SMTP Server wird der Empfänger
# mitgeteilt.
$smtp->data(); # Dem SMTP Server wird mitgeteilt, daß
# nun der Nachrichtentext folgt.
$smtp->datasend("Subject: $betreff\n"); # Betreffszeile wird zum Server
# geschickt.
$smtp->datasend("To: $empfaenger\n"); # Empfänger Emailadresse wird
# geschickt.
$smtp->datasend("\n"); # Leerzeile wird an Server geschickt
$smtp->datasend($nachricht);
$smtp->dataend(); # Dem Server wird mitgeteilt, daß kein weiterer
# Nachrichtentext folgt.
$smtp->quit; # Beenden der Verbindung mit dem Server
$pop3->quit();
Ausgabe:
kai@craano-desktop:~/PERL/POP3$ ./read_subject.pl
Einloggen in mx.PROVIDER.de als USER ...
Sie haben 1 Nachrichten
Header of message 1: Subject: XXX
Mailserver ist : mx.freenet.de
kai@craano-desktop:~/PERL/POP3$
USER, SECRET, PROVIDER ist alles ok. Habe das hier nur anonymisiert.
Wie man sieht, klappt auch das Abholen der Betreffzeile einer Email auf dem Server.
Aber wies0 funktioniert der Sendeteil denn nicht?
Die Ausgabe ist unverfälscht. Es kommt keinerlei Fehler, aber kommt eben auch keine Email. :mad:
Habe mal versucht dem Fehler auf die Spur zu kommen:
unless($smtp){print $!;}
if($smtp){print "success \n";}
Doch leider auch keine Fehlermeldung, immer nur ein "success".
Also eigentlich müsste es doch laufen.
Grüße.
craano.
ich versuche gerade mit einem Perl script einen Mail zu versenden, ich bekomme keine Fehlermeldungen, doch leider kommt keine mail bei mir an.
Zum Verständnis hier ein kurzes script wie ich vorgehe:
#!/usr/bin/perl -w
#
#
#
#
use Net::POP3;
use Net::SMTP;
$user = "USER";
$passwd = "SECRET";
$pop3Server = "mx.PROVIDER.de";
$pop3 = Net::POP3->new($pop3Server, Timeout => 60);
print "Einloggen in $pop3Server als $user ...\n";
$messagenum = $pop3->login($user,$passwd) || die "Konnte nicht in $pop3Server einloggen";
print "Sie haben $messagenum Nachrichten\n\n";
# Betreffszeilen der neuen Emails werden ausgelesen und angezeigt.
# Siehe unten für eine Erläuterung dieses Code-Blocks
for ($i=1;$i<=$messagenum ;$i++) {
$subject = $pop3->top ($i);
foreach $zeile (@$subject) {
if (index($zeile,"Subject:")>=0) {
print "Header of message $i: $zeile\n";
}
}
}
####Immer erst pop3, zur Identifizierung
$mailServer = 'mx.PROVIDER.de'; # Name des SMTP Servers. Angabe einer
# IP Adresse ist auch möglich
$nachricht = 'Testnachricht'; # Der Text der Nachricht
$absender = 'NAME@ADRESSE.de'; # Emailadresse des Absenders.
$betreff = 'Sendetest'; # Betreffszeile der Email
$empfaenger = 'AN@ADRESSE.de'; # Emailadresse des Empfängers
print "Mailserver ist : $mailServer\n"; # Name des SMTP Servers wird auf dem
# Bildschirm ausgegeben
$smtp = Net::SMTP->new($mailServer); # Ein neues SMTP Objekt wird erzeugt.
# Als Parameter wird der Name des SMTP
# Servers verlangt.
$smtp->mail($absender); # Dem SMTP Server wird der Absender
# mitgeteilt.
$smtp->to($empfaenger); # Dem SMTP Server wird der Empfänger
# mitgeteilt.
$smtp->data(); # Dem SMTP Server wird mitgeteilt, daß
# nun der Nachrichtentext folgt.
$smtp->datasend("Subject: $betreff\n"); # Betreffszeile wird zum Server
# geschickt.
$smtp->datasend("To: $empfaenger\n"); # Empfänger Emailadresse wird
# geschickt.
$smtp->datasend("\n"); # Leerzeile wird an Server geschickt
$smtp->datasend($nachricht);
$smtp->dataend(); # Dem Server wird mitgeteilt, daß kein weiterer
# Nachrichtentext folgt.
$smtp->quit; # Beenden der Verbindung mit dem Server
$pop3->quit();
Ausgabe:
kai@craano-desktop:~/PERL/POP3$ ./read_subject.pl
Einloggen in mx.PROVIDER.de als USER ...
Sie haben 1 Nachrichten
Header of message 1: Subject: XXX
Mailserver ist : mx.freenet.de
kai@craano-desktop:~/PERL/POP3$
USER, SECRET, PROVIDER ist alles ok. Habe das hier nur anonymisiert.
Wie man sieht, klappt auch das Abholen der Betreffzeile einer Email auf dem Server.
Aber wies0 funktioniert der Sendeteil denn nicht?
Die Ausgabe ist unverfälscht. Es kommt keinerlei Fehler, aber kommt eben auch keine Email. :mad:
Habe mal versucht dem Fehler auf die Spur zu kommen:
unless($smtp){print $!;}
if($smtp){print "success \n";}
Doch leider auch keine Fehlermeldung, immer nur ein "success".
Also eigentlich müsste es doch laufen.
Grüße.
craano.