perl imap将邮件移动到垃圾箱(Mail :: IMAPClient)
我需要将所有邮件从未看到的邮件移到垃圾箱(然后从收件箱中删除)。perl imap将邮件移动到垃圾箱(Mail :: IMAPClient)
my $inbox = $imap->select("Inbox");
my @mails = ($imap->unseen);
foreach my $msgid (@mails) {
$imap->set_flag("Deleted", @mails)
or die "Could not set flag: [email protected]\n";
}
此代码完全删除邮件。 (没有抹去太)
我试图使用“移动”和“复制”:
my $Trash = "Trash";
my $newUid = $imap->move($Trash, $msgid)
or die "Could not move: [email protected]\n";
my $uidList = $imap->copy($Trash, @mails)
or die "Could not copy: [email protected]\n";
但“移动”创建新的标记(文件夹),“拷贝”不工作“无法复制:6 NO [TRYCREATE]没有文件夹垃圾桶(失败)“ 我试图使用名称:/垃圾桶,[imap]垃圾桶等,类似的结果。 这必须适用于不同的邮件服务!
尝试下面的代码IMAP服务器支撑RFC6154like Gmail。它应该检测垃圾邮件文件夹名称。
use Mail::IMAPClient;
......
my $Trash;
{
my @Trash;
my @fhashes = $imap->folders_hash or die "Could not get list of folder hashes.\n";
foreach my $fhash (@fhashes) {
next unless map { /^\\Trash$/ ? ($_) :() } @{$fhash->{attrs}};
push (@Trash, $fhash->{name});
}
$Trash = pop(@Trash) if @Trash == 1;
}
if(defined($Trash)) {
...
}
是的!它适用于我的英语,乌克兰语和俄语。 (我改变这个推(@Trash,$ fhash - > {name});) 非常感谢! – user3751471 2014-10-01 11:57:18
已完成修复。在测试之后,我一直勇于/愚蠢地修改代码。无论如何,你应该把它当作一个工作原型。 – AnFi 2014-10-01 12:09:26
我发现邮件服务谁垃圾文件夹为TRASH。我很抱歉,但如何在正则表达式中添加“TRASH”? – user3751471 2014-10-01 12:32:01
您使用哪种imap软件包? [不要坚持不必要的猜测] – AnFi 2014-10-01 10:23:50
哦,我忘了写 Mail :: IMAPClient – user3751471 2014-10-01 10:37:34
你可以看到哪些文件夹? '我的$文件夹= $ imap->文件夹或死“列表文件夹错误:”,$ imap-> LastError,“\ n”;打印“文件夹:@ $ folders \ n”;' – AnFi 2014-10-01 10:43:55