2014-05-15 119 views
0

我有一个每日处理过程,它会将包含两个附件的电子邮件(实际上是整个组)发送到一个电子邮件。我下载zip文件,将其解压缩并将其中一个文件转发到另一个组。我在解压缩后转发的文件具有常量名称模式(例如,它始终以ABC_Daily_ *开头)。我必须每天都这样做。查询电子邮件收件箱

我希望这是自动化的。我想一个窗口服务,将执行以下操作:

  1. 投票邮件服务器(不停地寻找邮件与特定subjectline和发件人)
  2. 当需要的邮件到达收件箱,它会读取邮件并将zip文件下载到共享位置。
  3. 解压缩zip。
  4. 只要文件解压缩,所需文件将由文件观察器进程监视并作为所需组的附件转发。

点3-4对我来说很容易,因为我之前已经做了一些工作。但我不知道如何知道邮件何时进入一个组的收件箱。我不知道如何自动阅读邮件并执行上述操作。

请问您是否可以引导我的问题?除了我提到的那个之外,其他任何想法都是值得欢迎的。

回答

1

几年前我实现了一个类似的系统。我所做的是实现一个Windows服务,每隔X秒轮询一次交换邮箱并批量处理电子邮件。一个提示 - 根据你需要轮询的频率,你可能会发现一个由计划任务驱动的控制台应用程序更高效(而且工作量更少)。

对于实际的邮箱交互,我使用了几个第三方库processingparsing邮件,非常简单。

像这样的系统的困难是确保电子邮件只处理一次,并相应地处理有问题的电子邮件,而不会阻止服务。对我来说,就像将电子邮件移动到特定文件夹即ProcessingDeadletter一样简单。

我也有我的服务设置给我发电子邮件的报告,如队列大小,deadletter电子邮件和任何其他一般错误。

+0

嗨,詹姆斯。感谢回复。这第三方lib是免费的吗?据我所知,您使用第三方库来阅读收件箱,然后将电子邮件移动到一个文件夹,然后根据您的需要进行处理。我的理解是否正确? – AnkitMittal

+0

另外,您是如何确保电子邮件只处理一次的? – AnkitMittal

+0

@AnkitMittal是这两个库都是开源的(我提供了两个链接)。我使用IMAP客户端访问邮箱并阅读电子邮件,并使用SharpMimeTools解析邮件并简化提取。为了避免处理重复的邮件,我使用了一种简单而有效的方法 - 如果服务仍在忙于处理当前批次,我将忽略下一次轮询。 – James

相关问题