0

我想通过多个 Windows 服务从交换服务器获取电子邮件;每个 Windows 服务在不同的服务器上。我倾向于使用第三方工具来获取电子邮件。

我担心并发问题;即:两个服务同时获取同一封电子邮件。我不想使用一个控制器进程来控制哪个进程收到哪封电子邮件。

我正在考虑一种锁定机制,类似于数据库锁,每个进程都可以在进程中锁定电子邮件,然后标记它,一旦完成。或者

将立即标记电子邮件的“获取”方法。在任何其他进程到达之前,在微秒甚至更短的时间内。或者

想到的任何其他想法。

非常感谢

4

2 回答 2

0

您可能必须使用 DB 来锁定某些表。让您的服务用 ToDo 填充表格,然后将它们标记为已完成。您的服务将需要指向一个他们将获得工作 Todo 的地方,因此这将成为您的并发解决方案。可能是,一项服务只是填充 TODO 和其他服务来处理它们。可能是 MSMQ 可以提供帮助。一项服务堆积队列,其他服务取消库存。

于 2013-01-15T16:24:15.947 回答
0

这是您可能想要查看的 .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;
    } 
于 2013-01-15T16:36:35.117 回答