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 を使用し、電子メールとすべての書式タグを含むテストの大きなブロックを取得しました。また、受信トレイには 4 件のメールと 2 件の未読メールがあるため、 $imap-search が何かを返す必要があることも知っています。しかし、変数 @data は電子メールを保持しているため、出力でそれを逆参照する適切な方法がわかりません