2

これMail::IMAPClient->new()はWindows7でフリーズします:

sub connectGMail
{
    my $client = Mail::IMAPClient->new
    (
        Server   => 'imap.gmail.com',
        Port     => 993,
        Ssl      =>  1,
        User     => 'whateverUser',
        Password => 'aG00dP455w0rd',
        Socket   => IO::Socket::SSL->new
        (       
            SSL_verify_mode => SSL_VERIFY_NONE
        )
    )
    or die "Cannot connect  ($@)\n";
    return $client;
}

Windowsファイアウォールを無効にしてみましたが、何も変わりませんでした。

Linuxでは非常によく似たコードが正常に機能します。

sub connectGMail
{
    my $client = Mail::IMAPClient->new
    (
        Server   => 'imap.gmail.com',
        Port     => 993,
        Ssl      =>  1,
        User     => 'whateverUser',
        Password => 'aG00dP455w0rd'
    )
    or die "Cannot connect  ($@)\n";
    return $client;
}

どちらの場合も、CPANリポジトリから正常にインストールされましたが、Windowsでは、ソケットMail::IMAPClientオプションを含めないと、この警告が表示されます

*******************************************************************
 Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
 is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
 together with SSL_ca_file|SSL_ca_path for verification.
 If you really don't want to verify the certificate and keep the
 connection open to Man-In-The-Middle attacks please set
 SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
*******************************************************************

また、残りのスクリプト(電子メールを解析する)は正しく機能しません。

error:    unexpected end of header


error:    unexpected end of header


error:    unexpected end of header

よろしくお願いします。

4

1 に答える 1

2

ソケットとサーバー/ポートの両方が好きMail::IMAPClient->newではないようです。サーバー/ポートを使用してソケットを作成し、それを渡すと、正常に接続されます。

sub connectGMail
{
    my $socket = IO::Socket::SSL->new
    (  
       PeerAddr => 'imap.gmail.com',  
       PeerPort => 993, 
       SSL_verify_mode => SSL_VERIFY_NONE
    )  
    or die "socket(): $@";  

    my $client = Mail::IMAPClient->new
    (
        User     => 'whateverUser',
        Password => 'aG00dP455w0rd'
        Socket   => $socket
    )
    or die "Cannot connect  ($@)\n";
    return $client;
}
于 2013-03-25T22:12:52.407 に答える