我想通过多个 Windows 服务从交换服务器获取电子邮件;每个 Windows 服务在不同的服务器上。我倾向于使用第三方工具来获取电子邮件。
我担心并发问题;即:两个服务同时获取同一封电子邮件。我不想使用一个控制器进程来控制哪个进程收到哪封电子邮件。
我正在考虑一种锁定机制,类似于数据库锁,每个进程都可以在进程中锁定电子邮件,然后标记它,一旦完成。或者
将立即标记电子邮件的“获取”方法。在任何其他进程到达之前,在微秒甚至更短的时间内。或者
想到的任何其他想法。
非常感谢
您可能必须使用 DB 来锁定某些表。让您的服务用 ToDo 填充表格,然后将它们标记为已完成。您的服务将需要指向一个他们将获得工作 Todo 的地方,因此这将成为您的并发解决方案。可能是,一项服务只是填充 TODO 和其他服务来处理它们。可能是 MSMQ 可以提供帮助。一项服务堆积队列,其他服务取消库存。
这是您可能想要查看的 .NET POP3 MIME 客户端
您可能还想在代码中尝试这样的事情作为示例
Outlook.Application outlook = new Outlook.ApplicationClass();
Outlook.NameSpace ns = outlook.GetNamespace("Mapi");
object _missing = Type.Missing;
ns.Logon(_missing, _missing, false, true);
Outlook.MAPIFolder inbox = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
int unread = inbox.UnReadItemCount;
foreach (Outlook.MailItem mail in inbox.Items)
{
string s = mail.Subject;
}