【问题标题】:C# creating an .msg file --> Cannot start Microsoft Outlook errorC# 创建 .msg 文件 --> 无法启动 Microsoft Outlook 错误
【发布时间】: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 文件可能已经打开,或者你没有权限打开它。”

标签: c# outlook msg


【解决方案1】:

听起来您确实有一个 MIME 文件(扩展名应该是 .eml)而不是一个 MSG 文件(它是一个二进制 OLE 存储文件)。 在记事本中打开您的文件和 Outlook 创建的 MSG 文件以比较两者。

【讨论】:

  • 先生,非常感谢您的出色表现。我读过 .msg 和 .eml 之间的区别,但不明白如果我在从 Exchange 读取后保存 .msg 文件,我想将其保存为 .eml 以保留格式。 (我在想写我自己的 .msg 需要太多的专有知识,而不是把字节流保存到 .eml 是很棒的。)完美地工作!谢谢!
猜你喜欢
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
相关资源
最近更新 更多