【问题标题】:Programmatically open an email from a POP3 and extract an attachment以编程方式从 POP3 打开电子邮件并提取附件
【发布时间】:2010-11-12 16:41:32
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: asp.net vb.net pop3


    【解决方案1】:

    试试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

    【讨论】:

      【解决方案2】:

      Reading Email using Pop3 in C# 可能重复

      至少,那里有很多建议您可能会觉得有用

      【讨论】:

      • 几乎……我一直在寻找一个具有内置安全性并用 VB.NET 编写的预打包解决方案。如果我没有收到另一个答案,我会给你接受这个答案。
      【解决方案3】:

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

      对于在*nix 系统上下载消息fetchmail 似乎是标准并且非常有能力,但我选择mpop 是为了简单和Windows 兼容性(但它是跨平台的) .如果 mpop 没有帮我解决这个问题,我可能最终会使用基于 Python 的 getmail 做点什么,它是在 fetchmail 的开发停滞一段时间后创建的(后来又恢复了)。

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-09-27
        • 2010-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-07
        相关资源
        最近更新 更多