2012-02-17 21 views
1

私はこのスクリプトを使ってgmail smtpを通して自分のgmailアカウントにメールを送信しています。すでに述べたようなエラーが発生していませんか?接続に失敗しました:IO ::ソケット:: INET:接続:タイムアウトが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をお試しください。あなたが最後の3行を持っていない場合、これはあなたがGmailのサーバーに直接接続できないことを意味し

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 

:あなたはそのような何かを持っている必要があります。その後、自分のファイアウォール設定(存在する場合)もチェックします。

関連する問題