【问题标题】:EWS: Retrieving more than just attachments from signed emailsEWS:不仅从签名的电子邮件中检索附件
【发布时间】:2020-07-02 16:26:39
【问题描述】:

我正在尝试创建一个系统,该系统将拦截进入各种电子邮件地址的电子邮件并将它们分类,以及它们的所有附件。这些附件都是我们需要加载到另一个系统中的文件。目前,我们正在使用 Outlook 宏将所有附件放到一个目录中并以这种方式加载它们。不幸的是,这种方法不容易跟踪哪些电子邮件有哪些附件。如果我们想确保我们对收到的每份文件进行会计处理,我们需要一种更稳健的方法。

所以,我正在构建一个基于 EWS 的 Windows 服务。这个想法是它将订阅我想要管理的所有电子邮件地址。因此,它将了解所有新电子邮件、对它们进行分类并跟踪附件。它适用于大多数电子邮件,但安全发送的电子邮件需要由个人查看(因为这些电子邮件需要登录到某处的安全服务器才能查看消息和下载附件)。但是,对于数字签名的电子邮件,我只是下载了一个名为“smime.p7m”的附件。我在这个论坛上发现了一个帖子,告诉我如何获取附件,但是如果电子邮件正文是数字签名的呢?有没有办法我也可以提取它?

我决定采用here 描述的 MimeKit 方法(这不是公认的答案,但有几个答案涉及 MimeKit,所以我决定检查一下,它看起来很有希望)。

我目前的方法是,如果电子邮件正文没有经过数字签名,那么我可以直接从基本电子邮件将其加载到我的系统中。但是,如果它是数字签名的,那么我需要从 smime.p7m 文件中获取它,这就是我遇到麻烦的地方。不过,我使用示例提取附件没有问题。目前,我没有数字签名电子邮件正文的示例。但是,我想积极主动地在它发生之前找到解决方案,并且用户询问为什么缺少电子邮件正文。或者,知道这是否不可能同样有帮助,并且电子邮件中唯一经过数字签名的部分将是附件(在这种情况下,我可以完全忽略这一点)。这实际上是最好的情况!

【问题讨论】:

    标签: c# email exchangewebservices smime mimekit


    【解决方案1】:

    通常,当通过 S/MIME 对邮件进行签名时,整个邮件(包括正文和附件)都会被签名。

    理论上,邮件的每个单独组件都可以单独签名,但这不是大多数邮件客户端的工作方式(我不知道除了对整个邮件进行签名之外还有其他功能)。

    如果您想确保处理任何情况,只需确保处理消息中的所有MultipartSigned 部分和/或ApplicationPkcs7Mime 部分,然后您就可以确保处理所有情况(换句话说,不要假设只有其中之一)。

    【讨论】:

    • EWS EmailMessage 是否有可能有一个正文,而来自 EWS 的 smime.p7m 附件也有一个或多个 TextPart?我绝对没有为此做好准备。好的,我将不得不重新考虑我的策略。
    • 是的,一旦您从 smime.p7m 中提取内容(使用 Verify() 方法),您最终可能会得到多个 TextPart。有关消息结构的更多信息,请参阅github.com/jstedfast/MailKit/blob/master/… - 这会忽略签名部分,但只要想象一下这些示例中的每一个都嵌入到签名部分中,您就会明白这一点。
    猜你喜欢
    • 2014-03-04
    • 2016-04-09
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 2021-05-12
    • 1970-01-01
    相关资源
    最近更新 更多