【问题标题】:Microsoft.Office.Interop.Outlook._MailItem is blank on some systemsMicrosoft.Office.Interop.Outlook._MailItem 在某些系统上为空白
【发布时间】:2019-08-02 17:32:04
【问题描述】:

我正在尝试为我的经理自动生成报告,并使用以下代码生成电子邮件正文。

Microsoft.Office.Interop.Outlook._MailItem oMailItem = GenerateEmailBody("abc","xyz","Weekly Summary - Week  " + WeekNumber + " " + DateTime.Now.Year);

我正在使用互操作库。 GenerateBody 没有做任何特别的事情,除了生成 To、Subject、HTML 正文并返回 MailItem 对象。

现在,有趣的是,在我的系统上打开的电子邮件窗口显示了正确的内容和所有内容,而在我的 Managers 系统上,Outlook 窗口的正文是空白的!

典型的倒霉场景,

为了解决问题,我已经检查了两个系统上的默认电子邮件格式为 html 和默认字体可用性。

有什么建议吗?这是我的 GenerateEmailBody 函数的主体

【问题讨论】:

  • 发布代码,而不是代码的图像。图片无法复制或编译
  • 至于代码失败的原因,看起来您是在 粘贴 剪贴板中的任何内容,而不是向正文添加任何内容。如果剪贴板为空,则正文将为空。 wordDocumentEditor 实际上是一个 Word 文档。使用 Word 的 API 创建文本而不是复制/粘贴。检查How to: Programmatically insert text into Word documents
  • 实际上是的,我正在将我的 1 个 Word 窗口的内容复制到 Outlook 电子邮件 wordDocument.ActiveWindow.Selection.WholeStory(); wordDocument.ActiveWindow.Selection.Copy();奇怪的是,这确实适用于我的系统,而不是另一个
  • 检查How to copy the content of one word document into another word document?。自从您使用 Interop 以来,您已经可以访问实际文档,您无需通过剪贴板

标签: .net outlook office-interop


【解决方案1】:

我建议在所有修改后调用Display 方法。

请注意,Outlook 可能不会立即传播通过 OOM 所做的更改,否则,在您切换到另一个字段或只是保存更改之前,可能无法立即通过 OOM 访问在 UI 中所做的更改。这是处理 OOM 时的一个已知问题。

您可以尝试致电Save 将您的更改传播到 Outlook UI。

【讨论】:

    【解决方案2】:

    似乎代码是正确的,代码没有错,但是谢谢大家的回答。

    虽然,解决办法,

    电子邮件内容不可用的机器有一个默认值 新电子邮件的签名集,并且是 HTML 签名。因此,当我们禁用电子邮件签名时,电子邮件内容是可见的

    非常奇怪的行为。

    我怀疑这条线被称为有什么关系

    oMailItem.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      相关资源
      最近更新 更多