2012-02-17 2 views
1

У меня есть сценарий для отправки почты через gmail smtp в мою учетную запись gmail. Он не работает и дает уже упомянутую ошибку?Не удалось подключиться: IO :: Socket :: INET: connect: тайм-аут появляется в Perl.

use Net::SMTP::TLS; 

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

$mailer->mail('[email protected]'); 

$mailer->to('[email protected]'); 

$mailer->data; 

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

$mailer->dataend; 

$mailer->quit; 

ответ

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 => '[email protected]', 
    password => 'xxxxxx' 
); 

my $message = Email::Simple->create(
    header => [ 
     From   => '[email protected]', 
     To    => '[email protected]', 
     Subject  => 'Sent from perl!', 
    ], 
    body => 'Sent from perl!', 
); 

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

Спасибо Stamm ........ – kanwarpal

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. Затем проверьте также собственные настройки брандмауэра (если есть).

Смежные вопросы