以编程方式从POP3打开电子邮件并提取附件

问题描述:

我们有供应商将CSV文件作为电子邮件附件发送。这些CSV文件包含导入到我们的应用程序中的状态。我试图使端到端的流程自动化,但它目前依赖于某人打开电子邮件,将附件保存到服务器共享中,以便应用程序可以使用该文件。以编程方式从POP3打开电子邮件并提取附件

由于我无法说服供应商改变他们的流程,例如提供FTP位置或Web服务,我一直试图自动化现有流程。

有没有人知道一种方式来从POP3帐户以编程方式打开电子邮件并提取附件?首选的解决方案将驻留在Windows 2003服务器上,写入VB.NET并保证安全。应用程序可以驻留在与POP3服务器相同的服务器上,例如,我们可以设置Windows Server附带的免费POP3服务器,并针对存储在文件系统中的邮件文件进行提取。

顺便说一句,如果存在的话,我们愿意为现成的解决方案付费。

注意:我看过question,但答案指向不涉及附件的CodeProject解决方案。

Reading Email using Pop3 in C#

ATLEAST的可能的重复,有一个建议棚负载那里,你可能会发现有用

+0

差不多......我一直在寻找一种内置安全性并以VB.NET编写的预先打包解决方案。如果我没有收到其他答案,我会给你接受这个答案。 – Josh 2009-07-21 19:48:47

尝试Mail.dll email component,这是非常实惠,支持附件的民族性格和易于使用,它还支持SSL

Using pop3 As New Pop3() 
    pop3.Connect("mail.server.com") 
    pop3.Login("user", "password")        

    Dim builder As New MailBuilder() 
    For Each uid As String In pop3.GetAll()   
     ' Receive email message' 
     Dim mail As IMail = builder.CreateFromEml(pop3.GetMessageByUID(uid)) 

     'Write out received message' 
     Console.WriteLine(mail.Subject) 

     'Here you can use mail.Attachmets collection' 
     For Each attachment As MimeData In mail.Attachments 
      Console.WriteLine(attachment.FileName) 
      attachment.Save("c:\" + attachment.FileName) 
      ' you can also use attachment.Data here' 
     Next attachment 

    Next 

    pop3.Close(true) 
End Using 

您可以在这里下载:http://www.lesnikowski.com/mail

+1

看起来像一个不错的解决方案。 – Josh 2009-10-17 22:01:42

我会使用现有的软件和最少的编程提出一个更广泛的“下载POP3消息和提取附件”解决方案的晚期建议。我需要为通过电子邮件接收传真的客户进行此操作,并且不希望手动将附件保存到可导入应用程序的位置。

如需下载在* nix系统fetchmail的消息似乎是标准,很能干,但我选择mpop两个简单和Windows兼容性(但它是跨平台的)。如果mpop没有为我完成这个诀窍,那么我可能最终会用基于Python的getmail做一些事情,这是在fetchmail的开发停滞一段时间后(自恢复以来)创建的。

Mpop通过命令行或配置文件进行控制,因此我只是创建了多个配置文件,并通过命令行指定要加载的文件。我在“Exchange拾取目录”模式下使用它,这意味着它只需下载邮件并将它们作为文本(.eml)文件放在指定的目录中。

对于邮件附件的提取,UUDeview似乎是标准的(我使用的是Windows port of UUDeview)跨只是你可以与几乎所有的功能,你能想到的想要的任何系统。我的主要替代方案是2007年为不同客户开发的功能非常强大的Python脚本,但我很乐意使用预编译的可执行文件来安装Python或使用任何基于Python的打包工具进行打包, to-exe选项。

最后还有配置 - 以及上面提到的两个mpop配置文件(我可以通过使用命令行选项取消配置文件),我还有两个每10分钟通过计划任务启动的2行.cmd文件 - 第一行启动mpop下载到工作目录,第二行启动UUDeview并提取指定类型的附件(.pdf或.tif),然后删除从中提取附件的每个文件。输出被发送到另一个目录,员工可以根据需要直接附加文件。

这并不是实现这些目标的最优雅的方式,但它很快速,简单,功能强大且相当健壮 - 在每个阶段如果出现问题,它就会失败,从而不会丢失任何数据。唯一可能丢失数据的地方是发送到专用传真电子邮件地址的任何非附件消息,甚至这些消息都将位于处理目录中并最终被捕获。