IMAP rebex客户端连接超时

时间:2018-02-21 09:16:44

标签: c# email imap rebex

我有一些看不见的电子邮件的唯一键列表,我目前的逻辑是在一个会话/连接中处理它。但是,有时服务器[rebex]崩溃并发送错误*

  

Rebex.Net.ImapException:服务器已关闭连接。

在下面。

  • client.GetMailMessage(unique_key); //从唯一密钥
  • 获取特定电子邮件的信息

此处,它会标记特定电子邮件的状态,但会生成错误。因此,下次如果我尝试获取看不见的电子邮件的信息,将错过这个特殊的唯一密钥电子邮件。

在这里,我探讨了一些可能的方法

  1. 标记该错误电子邮件未见。
  2. 再次为该特定电子邮件创建连接并从中获取信息。
  3. 制作IMAP客户端单例,并在崩溃时创建一个新的。
  4. 还有更优化的解决方案吗?感谢

2 个答案:

答案 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)

经典的回答是在处理之后而不是之前将消息标记为已处理的

如果处理特定邮件导致崩溃,可能会导致问题。一个人不想重新连接并立即遇到同样的问题。所以也许记录你上次尝试的时间,然后尝试最早的消息。