我正在尝试使用输出电子邮件正文的 Net::IMAP::Client 编写脚本,但到目前为止,我尝试从模块输出的每个变量都显示为:ARRAY(0x86f5524) 或给出错误“不能使用未定义的值作为 SCALAR 引用。”
模块文档说
# fetch full messages
my @msgs = $imap->get_rfc822_body([ @msg_ids ]);
print $$_ for (@msgs)
应该包含对标量的引用。@msg_id 应该是收件箱中电子邮件号码的数字数组,但也作为数组引用返回。
我不确定如何正确输出这些数据以使其可读。这是模块参考:Net::IMAP::Client
这是我的代码片段:
use Net::IMAP::Client;
use Net::IMAP;
use Net::SMTP;
use strict;
use warnings;
my $imap = Net::IMAP::Client->new(
server => ,
user => , # i omitted this data for privacy
pass => ,
ssl => ,
port => ,
) or die "could not connect to IMAP server";
$imap->login or die('Login Failed: ' . $imap->last_error);
my $num_messages = $imap->select('[Gmail]/All Mail');
my @msg_id = $imap->search('ALL');
print @msg_id;
print "\n";
my @data = $imap->get_rfc822_body([@msg_id]);
print $$_ for (@data);
编辑:我使用 Data::Dumper 并获得了包含电子邮件和所有格式标签的一大块测试。我也知道 $imap-search 应该返回一些东西,因为收件箱有 4 封电子邮件,2 封未读。但是,由于变量@data 保存了电子邮件,我无法找出在输出中取消引用它的正确方法