【发布时间】:2017-07-13 00:54:04
【问题描述】:
我正在使用 C# 工作,在从 Exchange 中读取它并使其可从网站下载后,我创建了一个 .msg 文件(更像是重组的文件)。
尽管一切正常,但当我尝试打开 .msg 文件时,我看到此错误:“无法启动 Microsoft Outlook。我们无法打开 ------.msg 文件可能已经打开,或者您没有打开它的权限。”
无论 Outlook 是否打开,Chrome 或 IE 都会出现同样的错误。此外,即使文件允许读取权限,也会发生这种情况。我有 Outlook 2016 并找到此链接但没有真正的帮助:
https://www.add-in-express.com/forum/read.php?FID=5&TID=13956
还有其他人有这个问题或想知道如何解决吗?
【问题讨论】:
-
您确定 MSG 文件没有损坏吗?你究竟是如何创造它的?能否在 OutlookSpy 中打开 MSG 文件(单击 OpenIMsgOnIStg 按钮)?
-
好吧,进一步研究挑战在于创建 msg。 (它在原始电子邮件中具有附件的扩展名)。我使用 EmailMessage.Bind 绑定到电子邮件本身。这很好用。然后我浏览所有附件并检查:
if (attachment is FileAttachment),但事实并非如此。然后我检查if (attachment is ItemAttachment)是的。但是这里的纯代码不会产生正确大小的字节文件:'itm.Load(EmailMessageSchema.MimeContent); var bytes = itm.Item.MimeContent.Content;' -
底线是:a)问题实际上是 ItemAttachment 不会转换为 Microsoft.Exchange.WebServices.Data.Item 上的 Item 类列出的任何类型,而且:b)不可转换的 ItemAttachment
var bytes = itm.Item.MimeContent.Content;的“默认”似乎在这种情况下不起作用,所以我不确定如何从这个特定的附件中获取准确的 byte[] 数组。需要明确的是,我可以保存它,但大小太差了。 -
当我尝试打开损坏的文件(即从上面的代码创建)时出现此错误:“无法启动 Microsoft Outlook。我们无法打开 .msg 文件可能已经打开,或者你没有权限打开它。”