我有一些看不见的电子邮件的唯一键列表,我目前的逻辑是在一个会话/连接中处理它。但是,有时服务器[rebex]崩溃并发送错误*
Rebex.Net.ImapException:服务器已关闭连接。
在下面。
此处,它会标记特定电子邮件的状态,但会生成错误。因此,下次如果我尝试获取看不见的电子邮件的信息,将错过这个特殊的唯一密钥电子邮件。
在这里,我探讨了一些可能的方法
还有更优化的解决方案吗?感谢
答案 0 :(得分:3)
您可以阻止GetMailMessage
使用Imap
对象的Settings.UsePeekForGetMessage
选项将电子邮件标记为 :
var imap = new Imap();
imap.Settings.UsePeekForGetMessage = true;
...
一旦您确实将电子邮件标记为看到,请使用SetMessageFlags
方法:
imap.SetMessageFlags(unique_key, ImapFlagAction.Add, ImapMessageFlags.Seen);
答案 1 :(得分:0)
经典的回答是在处理之后而不是之前将消息标记为已处理的。
如果处理特定邮件导致崩溃,可能会导致问题。一个人不想重新连接并立即遇到同样的问题。所以也许记录你上次尝试的时间,然后尝试最早的消息。