Заголовок ответа удаляется при создании нового ответа в Outlook - PullRequest
0 голосов
/ 14 ноября 2018

Я работаю с VSTO в C #, и цель этой надстройки - заменить все, что напоминает телефонный номер, на гиперссылку, чтобы мы могли совершать звонки из нашего 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 ответного сообщения, не удаляя верхний заголовок?

...