3

Gmailの受信トレイ内でアクセスと制御を行うために、このモジュールをインストールしました。ただし、小さなPerlスクリプトを介して接続して機能をテストしようとすると、このエラーメッセージが表示されます。

Error: Could not login with those credentials - could not find final URL
  Additionally, HTTP error: 200 OK

これは、Gmail.pmモジュール内に作成されたエラーです。

問題のURL( https://www.google.com/accounts/ServiceLoginBoxAuth )にpingを実行できるので、URLが見つからないという問題があると感じています。さらに、手動で試したので、資格情報が正しく、そのURLで機能することを知っています。

このスクリプトをテストに使用しています。適切な場所にクレデンシャルを提供しました。


このモジュール も同じタイプのエラーでインストールしました。

なぜ私がブロックされているのか分かりますか?

4

5 に答える 5

12

以下に示すように、 Mail::IMAPClientを使用します。Mail :: IMAPClientを介してSSL認証に合格するには、Net::SSLeayのIO::Socket::SSLがインストールされている必要があります。もしそうなら、これは魅力のように機能します。

#!/usr/bin/env perl
use strict; use warnings;
use Mail::IMAPClient;

# Connect to IMAP server
my $client = Mail::IMAPClient->new(
  Server   => 'imap.gmail.com',
  User     => 'yourusername',
  Password => 'yourp4a55w0r&',
  Port     => 993,
  Ssl      =>  1,
  )
  or die "Cannot connect through IMAPClient: $!";

# List folders on remote server (see if all is ok)
if ( $client->IsAuthenticated() ) {
  print "Folders:\n";
  print "- ", $_, "\n" for @{ $client->folders() };  
};

# Say so long
$client->logout();
于 2010-03-02T18:02:39.993 に答える
2

Mail :: POP3Clientを使用してGmailアカウント(正確にはGoogleアプリアカウント)に正常にアクセスしています

于 2010-03-02T16:12:00.650 に答える
2

通常のPOP3またはIMAPを介してGmailにアクセスできない場合は、プログラミングの問題ではなく、構成の問題があります。

http://download.gna.org/hpr/fetchmail/FAQ/gmail-pop-howto.htmlで説明されている構成の詳細を使用して、Gmail(実際には同じインターフェイスを使用するGoogle Apps)からメールを取得します。

(ただし、この回答はスーパーユーザーにはるかに適しています!)

于 2010-03-02T17:57:58.743 に答える
0

次のモジュールで試すことができます

  Mail::Webmail::Gmail
于 2010-03-03T05:49:19.210 に答える
0

次のコードも使用できます

use warnings;
use strict;
use Mail::POP3Client;
use IO::Socket::SSL;
use CGI qw(:standard);
my $cgi = new CGI;
my $LOG ;
open $LOG , ">>filename" ;
my $username  = 'name@gmail.com';
my $password  = '*******' ;
 chomp($password);
my $mailhost  = 'pop.gmail.com';
my $port      = '995';

$cgi->header();

my $pop = new Mail::POP3Client(
USER     => $username,
PASSWORD => $password,
HOST     => $mailhost,
PORT     => $port,
USESSL   => 'true',
DEBUG     => 0,
);
if (($pop->Count()) < 1) {
exit;
}

print $pop->Count() . " messages found!:$!\n";

for(my $i = 1; $i <= $pop->Count(); $i++) {
 foreach($pop->Head($i)) {
 /^(From|Subject|Email):\s+/i && print $_, "\n";
 }

$pop->BodyToFile($LOG,$i);

}

$pop->Close();

exit;
于 2010-03-04T06:49:20.107 に答える