Thread Weitergehende Email-Prüfung (8 answers)
Opened by Yogi62 at 2010-10-15 10:22

Yogi62
 2010-12-02 17:45
#143273 #143273
User since
2010-10-15
14 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo zusammen,
bezüglich des erweiterten Emailtest habe ich geforscht und eine funktioniere Lösung gefunden, nicht auf Email::Valid beruht. Die Syntaxprüfung erledige ich in Javascript sehr früh und nutze dann folgende Funktion, die eine Fehlernummer bzw. 0 für ok zurückgibt.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
sub check_email
{
my $dns=Net::DNS::Resolver->new();
my $mehladdr = shift;
my ($user,$host) = split('@',$mehladdr);

## Wenn die Syntax noch nicht getestet wurde... ##############################

if ( $mehladdr =~ / / ||
$mehladdr =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ ||
$mehladdr !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/)
{
return 4;
}
else
{
if($dns->query($host,'MX') or $dns->query($host,'A'))
{
my $smtp = Net::SMTP->new($host);
$smtp->mail('');
if ( !$smtp->to($mehladdr) )
{
return 1;
}
$smtp->reset;
$smtp->quit;
return 0;
}
return 4;
}
}

Mit Hilfe von Net::SMTP fange ich an, eine Email zuzustellen, beende dies im Erfolgsfall sauber, breche im Fehlerfall einfach ab.

Ich hoffe, ich konnte hier auch einmal etwas nützliches beitragen, denn damit können Emails durch und durch gecheckt werden. Die voherige DNS-Prüfung muß sein, da sich Net::SMTP im Fehlerfall sonst aufhängt.

Liebe Grüße
Barbara

View full thread Weitergehende Email-Prüfung