【问题标题】:Need to parse mime content需要解析 mime 内容
【发布时间】:2019-01-29 15:42:40
【问题描述】:

我有一封电子邮件的 MIME 内容的 Base-64 编码字符串。电子邮件本身包含一个 .p7m 附件。

是否可以使用 Mimekit 解析 mime 内容并提取附件?

谢谢!

【问题讨论】:

    标签: c# exchangewebservices mimekit


    【解决方案1】:

    我并不完全清楚您要做什么,但听起来您只有消息的一个子集(即 MIME 部分之一的 base64 编码内容)。

    如果您只想获取原始的smime.p7m 文件附件(这是您拥有的base64 blob 内部的内容),那么您真正需要做的就是调用File.WriteAllBytes ("smime.p7m", Convert.FromBase64String(base64))

    但如果您想执行某些操作(例如解密或验证签名),则需要获取ApplicationPkcs7Mime 表示:

    ApplicationPkcs7Mime pkcs7;
    
    using (var stream = new MemoryStream ()) {
        byte[] buffer;
    
        // write the Content-Type header
        buffer = Encoding.ASCII.GetBytes ("Content-Type: application/pkcs7-mime; name=smime.p7m\r\n");
        stream.Write (buffer, 0, buffer.Length);
    
        // write the Content-Type header
        buffer = Encoding.ASCII.GetBytes ("Content-Type: application/pkcs7-mime; name=smime.p7m\r\n");
        stream.Write (buffer, 0, buffer.Length);
    
        // write the header termination sequence
        buffer = Encoding.ASCII.GetBytes ("\r\n");
        stream.Write (buffer, 0, buffer.Length);
    
        // write the base64 encoded content
        buffer = Encoding.ASCII.GetBytes (base64);
        stream.Write (buffer, 0, buffer.Length);
    
        // rewind the stream
        stream.Position = 0;
    
        pkcs7 = (ApplicationPkcs7Mime) MimeEntity.Load (stream);
    }
    

    现在您可以使用所有 ApplicationPkcs7Mime API。

    【讨论】:

    • 它不是消息的子集,它是整个消息的 mime 内容。我正在使用 EWS 从交换服务器获取电子邮件的 MIME 内容。我需要做的是解析这个内容,然后从中获取 .p7m 附件。
    • 你所说的没有任何意义,除非你的意思完全符合我的描述。
    • 也许我没有正确描述它。在 EWS 中,当我检索电子邮件项目时,xml 响应中有一个名为“mimecontent”的字段。 docs.microsoft.com/en-us/exchange/client-developer/…。这基本上是一个 base-64 编码的字符串,我认为是 mime 格式的整个消息。所以基本上,我要做的是解析这个字符串,并提取各个字段,例如正文、附件等...希望现在更有意义?
    • Base64 决定它。你得到了什么?
    • 看起来里面有一些文字,里面有我的电子邮件地址和其他信息。还有很多垃圾。
    猜你喜欢
    • 2013-12-21
    • 2013-11-01
    • 1970-01-01
    • 2010-11-05
    • 2010-11-08
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    相关资源
    最近更新 更多