Formular ??
patrick
- perl
Hallo kann mir jemand erklären was diese aussage bedeutet (/[1]/)
bezieht sich auf folgendes skript. das mir ab und zu einen fehler generiert.
foreach (split(/,/, $efrom)) {
(/<(.*)>/) ? print SOCK "rcpt to: $1$CRLF" : print SOCK "rcpt to: <$_>$CRLF";
$_ = <SOCK>; if (/[2]/) { close SOCK;error("SMTP AR: Unknown user. Email address $efrom not valid"); }
Moin!
$_ = <SOCK>; if (/[1]/) { close SOCK;error("SMTP AR: Unknown user. Email address $efrom not valid"); }
Ist am Textanfang (^) des aktuellen Wertes ($_) eine 4 oder eine 5 ([45]) schließe den Handler SOCK und führe die Funktion error mit dem Argument ("SMTP AR: Unknown user. Email address $efrom not valid") aus.
Offensichtlich wird eine Mailadresse auf Existenz auf einem Server überprüft, der mittels des Handlers SOCK abgefragt wird.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
45 ↩︎
hallo was meinst du mit 4 oder 5
hier das ganze skript, vielleicht kannst du mir das ja ein bisschen näher erklären.
if ($autoresponder) {
socket(SOCK, AF_INET, SOCK_STREAM, $proto) or error("SMTP AR Socket operation failed : Reason $!");
connect(SOCK, pack('Sna4x8', AF_INET, $port, $smtpaddr)) or error("SMTP AR Connection failed : Reason $!");
$oldfh = select(SOCK);
$| = 1; select($oldfh);$_ = <SOCK>;
if (/[1]/) { close SOCK; error("SMTP AR Service not available : Reason $!"); }
print SOCK "helo localhost$CRLF"; $_ = <SOCK>;
if (/[2]/) { close SOCK; error("SMTP AR CommError1: Reason $!"); }
print SOCK "mail from: <", $efrom, ">$CRLF"; $_ = <SOCK>;
if (/[3]/) { close SOCK; error("SMTP AR CommError2: Reason $!"); }
foreach (split(/,/, $efrom)) {
(/<(.*)>/) ? print SOCK "rcpt to: $1$CRLF" : print SOCK "rcpt to: <$_>$CRLF";
$_ = <SOCK>; if (/[4]/) { close SOCK;error("SMTP AR: Unknown user. Email address $efrom not valid"); }
}
Moin!
Wenn ich den Skripttorso kurz überschaue, wird Verbindung zu einem SMPT- Server aufgenommen und versucht dem eine Mail aufzuschwatzen :)
Schau Dir mal das SMTP- Protokoll an: Vermutlich beginnen alle Fehlermeldungen des Servers mit einer 4 oder 5, wie beim HTTP- Protokoll auch.
fastix®
Hallo
also wenn cih dich richtig verstanden haben dann überprüft mein protokloll zu erst ob die eingegebene E-Mail adresse überhaupt gibt. und wenn nicht ergibt sich eine fehlermeldung. richtig ?
was kann mann aber dagegen tun um solche meldungen zu unterdrücken ?
sofern es die email auch existiert aber dennoch eine fehlermedung kommt.
Moin!
was kann mann aber dagegen tun um solche meldungen zu unterdrücken ?
sofern es die email auch existiert aber dennoch eine fehlermedung kommt.
Hm. ich bin mir jetzt nicht ganz sicher: ich hab ja auch nur einen Torso des Scriptes.
Also: Die beschriebene Methode ist zwar die sicherste, weil diese direkt beim Mailserver des Empfängers anfragt, aber sie hat auch Nachteile:
Ich hab irgendwo (...) gelesen, daß die Mailserver solche Anfragen als untergeordnet betrachten und folglich erst spät oder nicht abarbeiten und statt dessen einen Fehlercode zurückgeben. Du schreibst, die Adresse gibt es und dennoch bekommst u eine Fehlermeldung? Das könnte daraus resultieren.
Jetzt hast Du zwei Möglichkeiten: auf weitere Hilfe hoffen oder selbst im SMTP- Protokoll nachschauen. Und dann die entsprechende Fehlermeldung ignorieren und ggf. die Mail also auf gut Glück versenden. Dazu musst Du auf jeden Fall Dein Skript anpassen, ich weiss ja nicht, wofür es ist.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®