连接失败:IO :: Socket :: INET:connect:超时出现在Perl中。

时间:2012-02-17 10:04:54

标签: 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.com',  
    Password=>      'xxxxxx');  

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

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

$mailer->data;  

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

$mailer->dataend;  

$mailer->quit;  

2 个答案:

答案 0 :(得分:3)

试试这个:

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} );

答案 1 :(得分:1)

此脚本应该可以正常工作(我已成功使用自己的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服务器。然后检查您自己的防火墙设置(如果有的话)。