在Outlook上创建新回复时,回复标头将被删除

时间:2018-11-13 21:32:58

标签: c# vsto outlook-addin

我正在使用C#中的VSTO,此加载项的目的是将类似于电话号码的任何内容替换为超链接,以便我们可以从API进行调用。在此过程中,我正在使用正则表达式,并使用包含超链接电话号码的自身副本替换“ body> .... body>”标签。但是,当用户尝试在使用外接程序时答复电子邮件时。包含上一封电子邮件中涉及人员信息的标题将被删除。

每次创建新答复时,都会从电子邮件顶部删除以下标头:

enter image description here

这是我的代码:

if (selObject is Outlook.MailItem)
{
    Outlook.MailItem mailItem =
        (selObject as Outlook.MailItem);

    var myOSAuthResponse = MyRibbon.loginWindow.myOSAuthResponse;

    //THIS IS THE IF CAUSING THE PROBLEM
    if (!Regex.IsMatch(mailItem.HTMLBody, @"<a\s+(?:[^>]*?\s+)?href=([""'])(.*?)\1>(\(?[23456789]{1}\d{2}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b)<\/a>"))
    {
        Group regexMatch = Regex.Match(mailItem.HTMLBody, @"(<body.*?>.*?<\/body>)").Groups[1];

        string body = regexMatch.Value;

        string newBody = Regex.Replace(body, @"(\(?[23456789]{1}\d{2}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b)", @"<a href='oscp:" + myOSAuthResponse.TokenResponse.Access_token + "?" + myOSAuthResponse.UserExtension + "?" + myOSAuthResponse.SilTenantId + "?" + MyRibbon.loginWindow.DeviceID + "?" + "$&" + "'>$&</a>");

        //HEADER IS DELETED HERE VVVVVVVVVVVVVV
        mailItem.HTMLBody = Regex.Replace(mailItem.HTMLBody, body, newBody);

    }
}

我在代码中添加了注释,以显示删除标题的确切行。新的顶部标头被删除,因为在进行回复时,它不再存在于HTMLBody标记中。因此,最终它会覆盖没有它的回复。如何在不删除顶部标头的情况下捕获回复消息的整个HTMLBody?

0 个答案:

没有答案