【问题标题】:VSTO Outlook strange behavior modifying mail bodyVSTO Outlook 修改邮件正文的奇怪行为
【发布时间】:2021-07-24 17:44:32
【问题描述】:

我遇到了一个相当奇怪的情况。我正在使用这些新编写的电子邮件的代码部分修改邮件内容。它在我迄今为止遇到的所有不同环境中都能完美运行。

     MailItem _currentItem; // this is assigned
     private void InsertAtCursor(string html)
            {
                html = ReplaceCID(html);
    
                Word.Document xDoc = _currentItem.GetInspector.WordEditor;
                var xSel = xDoc.Application.Selection;
    
                ClipboardHelper.CopyToClipboard(html);
    
                Thread.Sleep(1000);
    
                xSel.PasteSpecial();
    
                int i = xSel.Start += html.Length;
                xSel.SetRange(i, i);
    
                xDoc = null;
                xSel = null;
            }
    
            private void InsertAtTop(string html)
            {
                InsertCID(html);
    
                _currentItem.HTMLBody = html + _currentItem.HTMLBody;
            }

对于一位用户来说,这些代码行似乎不起作用。这意味着 HTML 没有写在邮件正文中 - 我可以确认邮件正文是 HTML 格式。您可以通过在顶部插入或在光标处插入来交替。如果 InsertAtCursor 产生异常,我的代码会处理,回退到 InsertAtTop。当代码处理正常或发生异常时,我总是保存邮件项目。

我的问题:是否有任何适用于 Outlook 的安全策略和/或可能阻止写入 HtmlBody 的设置?

编辑:

使用以下代码行得到相同的结果,几乎适用于我测试的所有客户端,除了一个。

public class Test
{
    private MailItem _currentItem;

    public Test(MailItem item)
    {
        _currentItem = item;
    }

    public void Set()
    {
        _currentItem.Body = "Test";
    }
}

【问题讨论】:

  • 哪行代码给出了异常?您是否尝试调试代码?
  • 不幸的是,没有抛出异常,我无法在我自己的环境(和调试)中复制这种行为,因为它只发生在少数几个系统中。因此,问题是 Outlook 是否有任何可能导致此问题的安全实践/设置?

标签: email outlook vsto


【解决方案1】:

您不能连接两个 HTML 字符串并期望返回一个有效的 HTML - 两者必须合并。至少在 InsertAtTop() 中。

【讨论】:

  • 嗨 Dmitry,我在考虑更多阻止它的插件/安全设置。我自己还没有研究过,但似乎宏支持/保护与它有关(GPO 到位)。 Outlook 完全有能力处理“错误”的 html,从来没有遇到过问题。
  • 它可以在一定程度上处理格式错误的 HTML——它迟早会坏掉。为什么要冒险?
  • 你说得对,我可以进一步研究,但它不能解释为什么相同的 HTML 可以在大多数其他环境中工作。您是否知道任何可能导致 VSTO 插件,尤其是邮件 (HTML) 正文更新出现故障的要求?例如。宏安全设置、与 Microsoft VBA for Outlook Addin 等其他插件的依赖关系?
  • 不要冒险,做正确的事——创建一个格式良好的 HTML 文档。
  • 好的,在那种情况下,现在有了另一个类似的问题,但随后是纯文本。是否有任何安全检查可以防止修改邮件正文?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
  • 2022-07-19
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
相关资源
最近更新 更多