我尝试从一个签名邮件中提取一个或多个PDF文件。我只是尝试用
加载smime.p7mmimeMessage = MimeMessage.Load(mem); // mem是使用File.WriteAllBytes(file,fileAttachment.Content)创建的File中的MemoryStream。 (EWS FileAttachment)
这不起作用,因为文件开头为:
0€*†H†÷ €0€10 + 0€*†H†÷ €$€, &Content-Type:多部分/混合; boundary =“ ---- = _ NextPart_000_0024_01D432F9.7988F010”
所以我删除了Content-Type(带有IndexOf,Substring)之前的东西(这里不是全部可见)..现在我可以将其加载到MineMessage中。现在我尝试对Base64字符串进行解码,但是如果我使用encodeto方法,则文件大小几乎相同 但是文件已损坏,如果我查看由Outlook解码的原始PDF文件和解码后的原始PDF文件的原始数据,它们几乎相同,但是在最后10%中它们是不同的(在原始文件中有更多的换行符)。>
所以我尝试使用
Convert.FromBase64String() 但是我总是得到无效的base64代码异常
带标题的PDF部分以:
开头Content-Type:应用程序/ pdf; name =“ DE_Windows 7_WebDAV.pdf” 内容传输编码:base64 内容处置:附件; filename =“ WebDAV.pdf”
,JVBERi0xLjUNCiW1tbW1DQoxIDAgb ...
(在之前和之后,此处看不到字符,我也删除了它们)。如果我将base64代码(使用Windows编辑器复制并粘贴为文本)加载到onlinedecoder中,则它正在解码,如果我使用base64code上传文件,它将失败... 并且base64内的内容不是base64字符“ unknown”,“,”,“ Uparrow Symbol”,我认为这会终止解码,对于这里=((参见图片) >
但是这1:1是什么File.WriteAllBytes(file,fileAttachment.Content);或/和fileAttachment.Load(file);保存
你能帮我吗?而这个未知的字符从哪里来?
答案 0 :(得分:0)
好吧,我明白了……我的生命浪费了两天
在保存签名的附件之前,您必须运行此代码以“取消签名”,并且所有您不想要的字符都消失了=)
byte [] content = fileAttachment.Content;
varsigned = new SignedCms();
signed.Decode(content);
byte [] unsigned = signed.ContentInfo.Content;