我想“比较”两个 IMAP 文件夹(在两个不同的服务器上)来比较垃圾邮件过滤器,我想有一个命令行工具(linux)来获取标题(不是整个目录,例如使用 'isync ' 或类似的),像这样:
$ imapget --subjects -p=密码用户@服务器
或这个:
$ imapget --format "$DATE - $FROM - $SUBJ" -p=密码用户@服务器
('imapget' cmd 是虚构的)
你有什么建议?
谢谢
我想“比较”两个 IMAP 文件夹(在两个不同的服务器上)来比较垃圾邮件过滤器,我想有一个命令行工具(linux)来获取标题(不是整个目录,例如使用 'isync ' 或类似的),像这样:
$ imapget --subjects -p=密码用户@服务器
或这个:
$ imapget --format "$DATE - $FROM - $SUBJ" -p=密码用户@服务器
('imapget' cmd 是虚构的)
你有什么建议?
谢谢
我会使用 OfflineIMAP、imapsync、imapcopy、isync 或 mailsync 之类的东西将两个 IMAP 文件夹镜像到本地 Maildir 文件夹。
然后我会使用类似 mailutils 的东西来输出两者中的消息列表并区分它们。
简单的方法可能是获取 perl 和 Mail::IMAPClient 并使用类似的东西:
use Mail::IMAPClient;
my $imap = Mail::IMAPClient->new(
Server => $imaphost, User => $login, Password => $pass, Uid => 1
);
$imap->select("demo_folder");
my $msgs = $imap->search("ALL");
for my $h (
# get specified headers from every message in folder "demo_folder" the
values %{ $imap->parse_headers( $msgs , "Date", "From", "Subject") } )
{
# $h is the value of each element in the hash ref returned
# from parse_headers, and $h is also a reference to a hash.
# We'll only print the first occurrence of each field because
# we don't expect more than one particular header line per
# message.
print map { "$_:\t$h->{$_}[0]\n"} keys %$h;
}