Разработка надстроек Outlook в C # - PullRequest
0 голосов
/ 24 апреля 2018

В настоящее время я пытаюсь написать надстройку для Outlook, которая отображает окно сообщения, если электронное письмо пришло с внешнего адреса (за пределами моей компании).

Я новичок в этом, поэтому я пытаюсьвзять бабистепс, но я врезался в стену.В моей голове это должно работать, но ничего не появляется.

public partial class ThisAddIn
{

    Outlook.Inspectors inspectors;

    private string getSenderEmailAddress(Outlook.MailItem mail)
    {
        Outlook.AddressEntry sender = mail.Sender;
        string SenderEmailAddress = "";

        if (sender.AddressEntryUserType == Outlook.OlAddressEntryUserType.olExchangeUserAddressEntry || sender.AddressEntryUserType == Outlook.OlAddressEntryUserType.olExchangeRemoteUserAddressEntry)
        {
            Outlook.ExchangeUser exchUser = sender.GetExchangeUser();
            if (exchUser != null)
            {
                SenderEmailAddress = exchUser.PrimarySmtpAddress;
            }
        }
        else
        {
            SenderEmailAddress = mail.SenderEmailAddress;
        }

        return SenderEmailAddress;
    }

    void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
    {
        Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
        if (mailItem != null)
        {

            if(getSenderEmailAddress(mailItem).Contains("@gmail.com"))
            {
                MessageBox.Show("From an external email");
            }

        }
    }

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        inspectors = this.Application.Inspectors;
        inspectors.NewInspector +=
        new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector);
    }

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {

    }

    #region VSTO generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InternalStartup()
    {
        this.Startup += new System.EventHandler(ThisAddIn_Startup);
        this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
    }

    #endregion
}

Кажется, это ничего не делает.Мне нужно, чтобы проверить, какая электронная почта открыта и отображается на моем экране.Любая помощь будет оценена!

1 Ответ

0 голосов
/ 24 апреля 2018

Вы пытались отладить код? Вызывается ли обработчик события NewInspector вообще?

В любом случае, обработчик событий NewInspector не подходит для доступа к элементам Outlook. Поддельный предмет может быть предоставлен, потому что инспектор на этом этапе не загрузил предмет полностью Поэтому я бы рекомендовал дождаться первого события Activate класса Inspector и получить доступ к элементу.

Также вам могут пригодиться упаковщики для инспекторов. Подробнее о них читайте в следующих статьях:

...