Экран Outlook мерцает, когда я редактирую HTML-тело письма в событии mail.openC#

Место общения программистов C#
Ответить
Anonymous
 Экран Outlook мерцает, когда я редактирую HTML-тело письма в событии mail.open

Сообщение Anonymous »

В настоящее время я пытаюсь отредактировать HTML-тело почтового элемента в событии mailitem.open. Это отлично работает с довольно короткими письмами, но чем длиннее само письмо, тем сильнее мерцает экран, пока Outlook не загрузит его на 100%. Я пытаюсь имитировать поведение подписи Outlook по умолчанию, но с моей собственной подписью из веб-службы.
Способ, которым я это делаю, — сначала назначить событие событию загрузки элемента:

Код: Выделить всё

Application.ItemLoad += new ApplicationEvents_11_ItemLoadEventHandler(Application_ItemLoad);
В методе itemload я назначаю обработчик события открытия:

Код: Выделить всё

private void Application_ItemLoad(object item)
{
log.Debug("Application_ItemLoad");
if (item is MailItem)
{
var mailItem = (MailItem)item;
mailItem.Open += new ItemEvents_10_OpenEventHandler(MailItem_Open);
}
}
И, наконец, в событии mailitem.open я загружаю свою подпись в письмо

Код: Выделить всё

public void MailItem_Open(ref bool Cancel)
{
*some logic here to get the right mail*
{
LoadDefaultSignature(*the right mailitem*);
}
}
Затем LoadDefaultSignature вызывает веб-сервис и помещает подпись в нужное место письма:

Код: Выделить всё

public void LoadDefaultSignature(MailItem mailItem)
{
try
{
log.Debug("LoadDefaultSignature");
var proxy = new WebServiceOutlookClient();
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var defaultSignature = proxy.GetDefaultSignatureByMail(Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress);

if (defaultSignature != null)
{
var htmlDoc = GetHtmlDoc(mailItem);

*logic to place out text in original mail*

mailItem.HTMLBody = htmlDoc.DocumentNode.OuterHtml;
log.Debug("DefaultSignature set");
}
}
catch (System.Exception exc)
{
log.Error("Couldn't load default signature", exc);
}
}
Я не совсем понимаю, почему Outlook показывает такое поведение, поскольку он не делает этого всякий раз, когда я позже меняю htmlbody из своей пользовательской панели задач. Может быть, происходит какая-то проверка?
Я также открыт для альтернативных способов решения этой проблемы. Моя идея заключалась в том, чтобы попробовать текстовый редактор, преобразовать мой HTML в openxml и использовать его, но пока безрезультатно.

Подробнее здесь: https://stackoverflow.com/questions/790 ... open-event
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»