gpt4 book ai didi

windows - Mail::IMAPClient 没有电子邮件内容

转载 作者:可可西里 更新时间:2023-11-01 10:48:04 26 4
gpt4 key购买 nike

这就是我使用 Mail::IMAPClient 连接 GMail 的方式

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

然后我将此客户端对象传递给 processEmails 子例程

sub processEmails
{
my $client = shift;

if ($client->IsAuthenticated())
{
$client->select('Pruebas');
my @messages = $client->messages();
my $mime_parser = getMIMEParser();
my $filer = MIME::Parser::FileInto->new();
mkdir(EXTRACT_DIR);

for(@messages)
{
my $msg_body = $client->message_string($_);
my $msg_subject = Encode::decode('MIME-Header', $client->subject($_));
if ($msg_body)
{
my $dir = EXTRACT_DIR . "/" . $msg_subject;
$filer->init($dir);
mkdir($dir);
$mime_parser->filer($filer);
my $ok = parseEmail($mime_parser, $msg_body);
if ($ok)
{
print(STDERR "Email \"$msg_subject\" parsed OK\n");
}
}
else
{
print(STDERR "No body for message with subject $msg_subject\n");
}
}
}
else
{
print(STDERR "Something nasty happened\n");
}
}

问题是 $msg_body(使用 message_string 检索)对于所有消息都是空的,但是 $msg_subject 是正确的,这意味着连接正常。这是输出:

No body for message with subject íQuÚ pasa!
No body for message with subject Prueba con formateo HTML

最佳答案

总的来说,我认为如果您尝试包含一个可运行的代码示例,那将非常有帮助。

我稍微更改了您的代码,对我来说效果非常好。我的代码库中有非常相似的代码。

use Mail::IMAPClient;
use MIME::Parser::Filer;

my $client = Mail::IMAPClient->new(
Server => 'imap.gmail.com',
User => 'test@gmail.com',
Password => 'test-pass',
Ssl => 1,
Uid => 1,
) or die "Cannot connect ($@)\n";

$client->select('INBOX');
my @messages = $client->messages();
my $filer = MIME::Parser::FileInto->new();
print "There are " . scalar @messages . " messages waiting.\n";

for (@messages) {
print "Processing...\n";
my $msg_body = $client->message_string($_);

my $msg_subject = Encode::decode( 'MIME-Header', $client->subject($_) );
if ($msg_body) {
print "$msg_body\n";
print( STDERR "Email \"$msg_subject\" parsed OK\n" );
}
else {
print( STDERR "No body for message with subject $msg_subject\n" );
}
}

关于windows - Mail::IMAPClient 没有电子邮件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15635063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com