通过编程从POP3打开电子邮件并提取附件

6
我们有一个供应商会发送CSV文件作为电子邮件附件。这些CSV文件包含状态,需要导入到我们的应用程序中。我正在尝试自动化整个过程,但目前还需要有人打开电子邮件并将附件保存到服务器共享文件夹中,以便应用程序可以使用该文件。
由于我无法说服供应商更改其流程,例如提供FTP位置或Web服务,因此我只能尝试自动化现有流程。
有人知道如何通过编程方式打开来自POP3帐户的电子邮件并提取附件吗?首选解决方案将驻留在Windows 2003服务器上,使用VB.NET编写并具有安全性。应用程序可以与POP3服务器位于同一台服务器上,例如,我们可以设置与存储在文件系统上的邮件文件进行交互的免费POP3服务器。
顺便说一句,如果有现成的解决方案,我们愿意付费购买。
注意:我查看了question,但答案指向的CodeProject解决方案未处理附件。
3个回答

3
尝试使用Mail.dll邮件组件,它非常实惠,支持附件、国际字符,易于使用,并且还支持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

2

几乎……我正在寻找一个预先打包的解决方案,具有内置安全性并使用VB.NET编写。如果我没有收到其他答案,我会接受这个答案。 - Josh

1
我会为更普遍的“下载POP3邮件并提取附件”解决方案提供一个后期建议,使用现有软件和最少的编程。我需要为一个客户执行此操作,该客户切换到通过电子邮件接收传真,并且不满意手动保存附件以便将其导入应用程序的位置。
对于*nix系统上的邮件下载,fetchmail似乎是标准且非常强大的工具,但我选择了mpop,因为它简单易用且兼容Windows(但也可以跨平台)。如果mpop无法胜任我的需求,我可能会使用基于Python的getmail进行处理,当时fetchmail的开发停滞了一段时间(现在已经恢复)。
Mpop可以通过命令行或配置文件进行控制,因此我只需创建多个配置文件,并通过命令行指定要加载哪个文件。我正在使用“Exchange接收目录”模式,这意味着它只是下载邮件并将它们作为文本(.eml)文件放置在指定目录中。
为提取邮件附件,UUDeview 似乎是标准方案(我正在使用 Windows 版本的 UUDeview),在任何您想要的系统上都可以使用,并拥有几乎任何您想要的功能。我的主要替代方案是一个远不如此强大的 Python 脚本,这是我在 2007 年为另一个客户开发的,但我很高兴选择一个预编译的可执行文件,而不是安装 Python 或将其打包为任何 Python-to-exe 选项之一。

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

这并不是最优雅的方法来达到这些目的,但它很快、简单、功能齐全且相当健壮——在每个阶段,如果出现问题,它会失败,以便不会丢失任何数据。唯一可能丢失数据的地方是发送到专用传真电子邮件地址的任何非附件消息,即使这些消息也将停留在处理目录中,并最终被捕获。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接