2016-09-25 7 views
1

Ich versuche, E-Mails von meinem Google Mail-Konto zu senden, und den Fehler:Perl smtp E-Mail senden funktioniert nicht

Error sending email: Connect failed :IO::Socket::INET: connect: timeout at /home/tas/perl5/lib/perl5/Email/Send/SMTP/TLS.pm line 45 

ich mehrere verschiedene E-Mail-Adressen (gmail und andere), aber das Ergebnis habe versucht, ist dasselbe.

Ich benutze diesen Code:

#!/usr/bin/perlml 
use Email::Send; 
print "Content-type: text/html\n\n"; 
my $mailer = Email::Send->new({ 
    mailer => 'SMTP::TLS', 
    mailer_args => [ 
     Host => 'smtp.gmail.com', 
     Port => 587, 
     User => '[email protected]', 
     Password => 'XXXXXXXXX', 
     Hello => 'fayland.org', 
    ] 
}); 

use Email::Simple::Creator; # or other Email:: 
my $email = Email::Simple->create(
    header => [ 
     From => '[email protected]', 
     To  => '[email protected]', 
     Subject => 'test', 
    ], 
    body => 'test', 
); 
eval { $mailer->send($email) }; 
die "Error sending email: [email protected]" if [email protected]; 

Was ist hier falsch? Gibt es noch andere Möglichkeiten, E-Mails mit SMTP zu senden?

+4

Sie scheinen die Fehlermeldung nicht sorgfältig zu lesen. Ein 'connect: timeout' sollte nichts mit der Adresse zu tun haben, an die Sie senden. Ihre Verbindung zum SMTP-Server läuft ab, was bedeutet, dass Ihre Internetverbindung eine Firewall enthält, die den ausgehenden Datenverkehr blockiert ... nichts mit Ihrem Code oder den verwendeten Modulen zu tun hat. Beheben Sie dieses Problem. Versuchen Sie 'telnet smtp.gmail.com 587' oder' openssl s_client -connect smtp.gmail.com: 587'. Was siehst du? –

+0

@ Michael-sqlbot, und wie kann ich es auf dem Server ausführen? Ich habe nur ftp und cpanel acses zu meiner Website ... – adrenalin

+0

Sie können auch ['Email :: Send :: SMTP :: Gmail'] (https://metacpan.org/pod/Email::Send::SMTP :: Google Mail). Ich habe es [hier] getestet (http://www.perlmonks.org/?node_id=1170831). Wenn Sie Ihre Google Mail-Kontoeinstellungen nicht ändern möchten, um den Zugriff für weniger sichere Apps zuzulassen, könnten Sie versuchen, OAuth2-Authentifizierungen zu verwenden, aber ich konnte nicht herausfinden, wie dies in Perl funktioniert. Ich habe es jedoch in Python geschafft, mit [python-oauth2] (https://github.com/joestump/python-oauth2). –

Antwort

4

Error sending email: Connect failed :IO::Socket::INET: connect: timeout at /home/tas/perl5/lib/perl5/Email/Send/SMTP/TLS.pm line 45

Sieht aus, als wäre nichts mit Ihrem Perl-Code falsch. Es scheint, dass dies ein Netzwerkproblem ist. Etwas in Ihrem Netzwerk verhindert, dass Sie sich über Port 587 mit Gmail verbinden.

Sie müssen dies wahrscheinlich mit den Systembetreuern für Ihren Server besprechen.

Verwandte Themen