自动处理电子邮件附件

3

我想编写一个应用程序(很可能是用C#编写),用于检查特定账户上的电子邮件,检测附加的文件并将它们分离到一个文件夹中进行处理。

是否有标准的.NET类可以执行这些任务?如果没有,我还能使用什么?

该应用程序将作为服务运行。


预计在桌面上运行?带客户端(Outlook等)?还是在服务器上?哪个服务器(Exchange等)? - Simon Mourier
@SimonMourier:实际上它可以是两者。Outlook客户端或某些服务器(我现在没有信息)。对于Outlook客户端的答案已经很有帮助了。 - user1196549
你可以从C#中使用Outlook的Application.NewMailEx事件(就像在VBA中这里:https://msdn.microsoft.com/en-us/library/office/aa171304.aspx)。根据您的配置(安全性、邮件帐户类型等),实现细节可能会有很大差异。 - Simon Mourier
为什么你不回复评论? - Simon Mourier
@SimonMourier:我回答了你的第一个评论,不是吗? - user1196549
1个回答

1
虽然BCL中没有用于下载电子邮件的API,只有发送电子邮件的API,但现在有一个非常受欢迎的库,是微软推荐的用于发送和接收电子邮件的库,它支持POP3、IMAP和SMTP。https://github.com/jstedfast/MailKit 检测附件并将其分离到文件夹进行处理。
我假设你的意思是将文件下载到目录中。幸运的是,使用MailKit很容易做到这一点,该库的作者在此处编写了一个示例:https://dev59.com/hFoV5IYBdhLWcg3wc-jo#36229918 (代码来自链接)
foreach (var attachment in message.Attachments) {
    using (var stream = File.Create ("fileName")) {
        if (attachment is MessagePart) {
            var part = (MessagePart) attachment;

            part.Message.WriteTo (stream);
        } else {
            var part = (MimePart) attachment;

            part.ContentObject.DecodeTo (stream);
        }
    }
}

该应用程序将作为服务运行。

这也非常容易实现,您需要编写一个Windows服务。关于使用C#编写服务的资源有很多。在Visual Studio中还有一个模板可供使用。

enter image description here


我还发现了类似的OpenPop。微软居然没有一个接收解决方案,这真是太神奇了。 - user1196549
我的回答没有帮助吗? - user9993

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