我有我认为是简单的代码来打开收件箱,循环浏览消息并将它们移至垃圾箱。出于某种原因,MoveTo 正好挂起 2 分钟,然后因找不到主机名而失败。如果我打开一个邮件客户端,我可以看到它立即成功地完成了移动。如果我更改对 MoveToAsync 的调用,它也会进行移动,但 iMapClient 正忙于另一个线程的例外情况。
ImapClient client = new ImapClient();
try
{
using (client)
{
client.Connect(EXT_IMAP_SERVER, EXT_IMAP_PORT, SecureSocketOptions.None);
client.Authenticate(EXT_USERNAME, EXT_PASSWORD);
IMailFolder inbox = client.Inbox;
inbox.Open(FolderAccess.ReadWrite);
IMailFolder deletedItems = client.GetFolder("Deleted Items");
int totalMessages = inbox.Count;
for (int i = 0; i < totalMessages; i++)
{
// get message
var message = inbox.GetMessage(i);
AddOutputMsg("Received Msg from:" + message.From);
// process
//var theAttachments = message.Attachments;
// Move to deleted items
inbox.MoveToAsync(i, deletedItems);
Application.DoEvents();
}
client.Disconnect(true);
}
}
catch (Exception e)
{
AddOutputMsg(e.ToString());
}
这就是项目中使用mailkit的所有代码,没有其他代码访问ImapClient。
我试过在 imapclient、收件箱和文件夹上使用锁定命令,结果都一样。