Запрет MailItem.Reply от открытия окна инспектора в Outlook 2016 - PullRequest
0 голосов
/ 29 августа 2018

Я создаю надстройку для Outlook, чтобы добавить собственную подпись в Outlook Outlook, когда пользователь нажимает кнопку «Ответить». Как только пользователь нажимает на кнопку ответа в проводнике, открывается новый инспектор, и я закрываю инспектор с кодом (который s # cks). Может быть способ полностью отключить открытие инспектора ответов.

    private Microsoft.Office.Tools.CustomTaskPane CustomTaskPane;
    UserDetail usr = null;
    Outlook.Explorer currentExplorer = null;
    Outlook.MailItem mailItem;
    private Inspector replyInspector;

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        currentExplorer = this.Application.ActiveExplorer();
        currentExplorer.SelectionChange +=
                            new Outlook.ExplorerEvents_10_SelectionChangeEventHandler(CurrentExplorer_Event);
    }
    private void CurrentExplorer_Event()
    {
        if (this.Application.ActiveExplorer().Selection.Count == 1
        && this.Application.ActiveExplorer().Selection[1] is Outlook.MailItem)
        {
            if (mailItem != null)
            {
                // when the reply button is clicked
                ((Outlook.ItemEvents_10_Event)mailItem).Reply -= new Outlook.ItemEvents_10_ReplyEventHandler(MailItem_Reply);

                // When an item is selected
                Outlook.Selection mySelection = this.Application.ActiveExplorer().Selection;
                Outlook.MailItem mailitem = null;
                foreach (Object obj in mySelection)
                {
                    if (obj is Outlook.MailItem)
                    {
                        mailitem = (Outlook.MailItem)obj;
                        if (mailitem != null)
                        {
                            if (mailitem.Sent)
                            {

                            else
                            {
                                // Compose
                            }
                        }
                    }
                }
            }
            mailItem = this.Application.ActiveExplorer().Selection[1];
            ((Outlook.ItemEvents_10_Event)mailItem).Reply += new
             Outlook.ItemEvents_10_ReplyEventHandler(MailItem_Reply);
            // Close Inspector
            replyInspector.Close(OlInspectorClose.olDiscard);
        }
        else
        {
        }
    }

    void MailItem_Reply(Object response, ref bool cancel)
    {
        try
        {
            MailItem mitem = (Outlook.MailItem)response;
            replyInspector = (mitem).GetInspector;
            replyInspector.Activate();
            (mitem).HTMLBody = tempSignature + ((Outlook.MailItem)response).HTMLBody;
        }
        catch (System.Exception e)
        {
            MessageBox.Show(e.ToString());
        }
    }

1 Ответ

0 голосов
/ 29 августа 2018

Во-первых, зачем вам закрывать инспектор, если вы все равно его открываете? Почему бы не вставить подпись, когда инспектор открыт?

Во-вторых, вы не можете объединить две строки HTML и ожидать, что результирующая строка будет действительным HTML, эти две необходимо объединить. Или, что еще лучше, используйте Word Object Model (Word.Document возвращается из Inspector.WordEditor), чтобы вставить любой текст в любое место в теле сообщения.

...