连接失败:IO::Socket::INET:Connect:timeout在Perl中显示。

连接失败:IO::Socket::INET:Connect:timeout在Perl中显示。,perl,scripting,Perl,Scripting,我已编写此脚本,通过gmail smtp将邮件发送到我的gmail帐户。它不工作并且给出了已经提到的错误 use Net::SMTP::TLS; my $mailer = new Net::SMTP::TLS( 'smtp.gmail.com', Hello => 'smtp.gmail.com', Port => 587, User => 'cetranger@gmail.co

我已编写此脚本,通过gmail smtp将邮件发送到我的gmail帐户。它不工作并且给出了已经提到的错误

use Net::SMTP::TLS;  

my $mailer = new Net::SMTP::TLS(  
    'smtp.gmail.com',  
    Hello   =>      'smtp.gmail.com',  
    Port    =>      587,  
    User    =>      'cetranger@gmail.com',  
    Password=>      'xxxxxx');  

$mailer->mail('cetranger@gmail.com');  

$mailer->to('cetranger@gmail.com');  

$mailer->data;  

$mailer->datasend("Sent from perl!");  

$mailer->dataend;  

$mailer->quit;  
试试这个:

use strict;
use warnings;

use Email::Simple;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP::TLS;

my $transport = Email::Sender::Transport::SMTP::TLS->new(
    host     => 'smtp.gmail.com',
    port     => 587,
    username => 'cetranger@gmail.com',
    password => 'xxxxxx'
);

my $message = Email::Simple->create(
    header => [
        From           => 'cetranger@gmail.com',
        To             => 'cetranger@gmail.com',
        Subject        => 'Sent from perl!',
    ],
    body => 'Sent from perl!',
);

sendmail( $message, {transport => $transport} );
试试这个:

use strict;
use warnings;

use Email::Simple;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP::TLS;

my $transport = Email::Sender::Transport::SMTP::TLS->new(
    host     => 'smtp.gmail.com',
    port     => 587,
    username => 'cetranger@gmail.com',
    password => 'xxxxxx'
);

my $message = Email::Simple->create(
    header => [
        From           => 'cetranger@gmail.com',
        To             => 'cetranger@gmail.com',
        Subject        => 'Sent from perl!',
    ],
    body => 'Sent from perl!',
);

sendmail( $message, {transport => $transport} );

这个脚本实际上应该可以运行(我用自己的gmail帐户成功地进行了测试)

我怀疑你中间有防火墙阻止你连接gmail。 你能从你的主机上试试telnet smtp.gmail.com 587吗。你应该有这样的东西:

host$ telnet smtp.gmail.com 587
Trying 173.194.67.108...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP da8sm6658151wib.6

如果您没有最后3行,这意味着您无法直接连接到gmail服务器。然后检查你自己的防火墙设置(如果有)。

这个脚本实际上应该可以工作(我用我自己的gmail帐户成功测试了)

我怀疑你中间有防火墙阻止你连接gmail。 你能从你的主机上试试telnet smtp.gmail.com 587吗。你应该有这样的东西:

host$ telnet smtp.gmail.com 587
Trying 173.194.67.108...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP da8sm6658151wib.6
如果您没有最后3行,这意味着您无法直接连接到gmail服务器。然后检查您自己的防火墙设置(如果有)