我正在使用MailKit lib并遇到问题。
我的应用程序已在Inbox(Gmail)中指定电子邮件,并将其删除。
IList<UniqueId> listUid = inbox.Search(query);
for (int i = 0; i < listUid.Count; i++)
{
var message = inbox.GetMessage(listUid[i]);
inbox.AddFlags(msg.Uid, MessageFlags.Deleted, true);
inbox.Expunge();
}
它运行正常,但是当Gmail设置对话视图=对话视图时,如果有相同的电子邮件主题和相同的发件人,则标记为删除的邮件将在收件箱中进行混搭。在下一次计数消息时,所有删除消息都将重新计数。怎么避免呢? (保存Uid的删除消息是单向的,但是当消息号增加时,处理会很慢)
非常感谢。
答案 0 :(得分:1)
您需要做的是转到您的GMail设置并更改您的IMAP帐户的行为,以便它不会将邮件移至垃圾箱。
要么将消息移动到Trash文件夹中,要么将MoveTo()传递给Trash文件夹,以便在Trash文件夹中获取消息的UID(提示:使用MoveTo()方法的返回值),然后打开“废纸篓”文件夹,从那里删除消息。
注意:此代码未经测试,但它应如下所示:
var trash = client.GetFolder (SpecialFolder.Trash);
var moved = client.Inbox.MoveTo (uid, trash);
if (moved.HasValue) {
trash.Open (FolderAccess.ReadWrite);
trash.AddFlags (moved.Value, MessageFlags.Deleted, true);
trash.Expunge (new [] { moved.Value });
}