Способ, которым я это делаю, — сначала назначить событие событию загрузки элемента:
Код: Выделить всё
Application.ItemLoad += new ApplicationEvents_11_ItemLoadEventHandler(Application_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);
}
}
Код: Выделить всё
public void MailItem_Open(ref bool Cancel)
{
*some logic here to get the right mail*
{
LoadDefaultSignature(*the right mailitem*);
}
}
Код: Выделить всё
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);
}
}
Я также открыт для альтернативных способов решения этой проблемы. Моя идея заключалась в том, чтобы попробовать текстовый редактор, преобразовать мой HTML в openxml и использовать его, но пока безрезультатно.
Подробнее здесь: https://stackoverflow.com/questions/790 ... open-event
Мобильная версия