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

时间:2009-07-21 15:26:53

标签: asp.net vb.net pop3

我们有一家供应商将CSV文件作为电子邮件附件发送。这些CSV文件包含导入我们的应用程序的状态。我正在尝试端到端地自动化流程,但它目前依赖于有人打开电子邮件,将附件保存到服务器共享,因此应用程序可以使用该文件。

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

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

顺便说一下,如果有的话,我们愿意支付现成的解决方案。

注意:我确实看过这个question,但答案指向一个不处理附件的CodeProject解决方案。

3 个答案:

答案 0 :(得分:3)

尝试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 :(得分:2)

可能重复Reading Email using Pop3 in C#

至少,那里有大量的建议你可能会觉得有用

答案 2 :(得分:1)

我将推迟使用现有软件和最少编程的更广泛的“下载POP3消息和提取附件”解决方案的建议。我需要为通过电子邮件切换到接收传真的客户执行此操作,并且不满意手动将附件保存到可以将其导入应用程序的位置。

要在* nix系统fetchmail上下载邮件似乎是标准功能,并且非常强大,但我选择 mpop 来实现简单性和Windows兼容性(但它是跨平台)。如果mpop没有为我完成这个技巧,我可能最终会使用基于Python的getmail做一些事情,这是在fetchmail的开发停滞一段时间后创建的(它已经恢复)。

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

对于邮件附件的提取,UUDeview似乎是您可能需要的几乎任何系统的标准(我正在使用Windows port of UUDeview)。我对此的主要替代方案是我在2007年为不同的客户端开发的功能要弱得多的Python脚本,但我很高兴能够使用预编译的可执行文件来安装Python或使用任何Python包装 - to-exe选项。

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

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