Невозможно добавить подпись только один раз при ответе на электронные письма в надстройке VSTO.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно добавить подпись только один раз при ответе на электронные письма в надстройке VSTO.

Сообщение Anonymous »

Я работаю над надстройкой VSTO для Outlook, в которой мне нужно добавить подпись к электронному письму, когда оно будет готово к составлению. В частности, это должно произойти только один раз, когда электронное письмо открывается для ответа или ответа всем.
Проблема:
Событие запускается несколько раз, а не только один раз. Например, когда я использую события Inspectors.NewInspector и CurrentExplorer.SelectionChange, они срабатывают в ситуациях, когда этого не должно быть, например, для встроенных ответов или для новых инспекторов, не связанных с ответом.
Вот моя текущая реализация:

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

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
outlookApp = this.Application;
inspectors = outlookApp.Inspectors;
inspectors.NewInspector += Inspectors_NewInspector;

// Hook to ActiveExplorer for inline responses
currentExplorer = outlookApp.ActiveExplorer();
if (currentExplorer != null)
{
currentExplorer.SelectionChange += CurrentExplorer_SelectionChange;
}
}

private void Inspectors_NewInspector(Outlook.Inspector inspector)
{
try
{
if (inspector.CurrentItem is Outlook.MailItem mailItem)
{
// Cast the inspector to the event interface
Outlook.InspectorEvents_10_Event inspectorEvents = (Outlook.InspectorEvents_10_Event)inspector;

// Subscribe to the Activate event
inspectorEvents.Activate += () => Inspector_Activate(inspector, inspectorEvents);
}
}
catch (Exception ex)
{
MessageBox.Show($"Error: {ex.Message}");
}
}

private void CurrentExplorer_SelectionChange()
{
try
{
// Check if there is an inline response
var inlineResponse = Globals.ThisAddIn.Application.ActiveExplorer().ActiveInlineResponse;
if (inlineResponse != null && inlineResponse is Outlook.MailItem mailItem)
{
if (IsReplyEmail(inlineResponse))
{
// Adding signature
}
}
}
catch (System.Exception ex)
{
System.Diagnostics.Debug.WriteLine($"Error: {ex.Message}");
}
}
Я хочу:
  • Определять, когда электронное письмо с ответом или сообщением «ответить всем» готово к написанию.
    Немедленно добавьте подпись в электронное письмо.
  • Убедитесь, что это происходит только один раз для каждого состава электронного письма.
Как я могу надежно отслеживать, когда электронное письмо с ответом/ответом на все готово к составлению, не вызывая событие несколько раз? Есть ли лучший способ справиться с этим в рамках надстройки VSTO?

Подробнее здесь: https://stackoverflow.com/questions/793 ... sto-add-in
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Лучший подход для загрузки нескольких документов Word с сервера в надстройке VSTO Word: один HTTP GET для каждого файла
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Невозможно удалить все комментарии в надстройке VSTO C# Word.
    Anonymous » » в форуме C#
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous
  • Проблема с UndoreCord.StartCustomRecord в VSTO надстройке: отменить разрывы стека после пули/нумерации
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Добавьте подпись при ответе, используя надстройку Selection C# vsto
    Anonymous » » в форуме C#
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Добавьте подпись при ответе, используя надстройку Selection C# vsto
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

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