Это как подключить йо GMail, используя Mail::IMAPClient
Нет содержания электронной почты с почтой :: IMAPClient
sub connectGMail
{
my $socket = IO::Socket::SSL->new
(
PeerAddr => 'imap.gmail.com',
PeerPort => 993,
SSL_verify_mode => SSL_VERIFY_NONE
)
or die "socket(): [email protected]";
my $client = Mail::IMAPClient->new
(
User => 'whateverUser',
Password => 'aG00dP455w0rd'
Socket => $socket
)
or die "Cannot connect ([email protected])\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
(retreived используя message_string
) пуст для всех сообщений, но $msg_subject
верен, что означает, что соединение в порядке. Вот результат:
No body for message with subject íQuÚ pasa!
No body for message with subject Prueba con formateo HTML
попробовать '$ client-> body_string ($ _)' вместо 'message_string()' – imran
Это работает , но мне нужны заголовки, чтобы разобрать его с помощью «MIME :: Parser». Название путается, я его отредактировал. – m0skit0
Я не знаю, что делают 'getMIMEParser()' и 'parseEmail()'. Вы рассматривали метод 'parse_headers()' в 'Mail :: IMAPClient'? – imran