Как решить, было ли сообщение отправлено, отправлено или переслано? - PullRequest
3 голосов
/ 12 января 2011

Я использую Visual Studio 2010 для создания надстройки Outlook 2007.Теперь я хочу знать, было ли электронное письмо отправлено, отвечено или переслано.Есть ли для этого какая-либо недвижимость?

using Outlook = Microsoft.Office.Interop.Outlook;

namespace _Outlook2k7_Add_In
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
        }

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

        void Application_ItemSend(object Item, ref bool Cancel)
        {
            Outlook.MailItem mail = Item as Outlook.MailItem;

            if (mail == null)
                return;

            // Magic?
        }

        #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);
            this.Application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
        }

        #endregion
    }
}

Ответы [ 2 ]

1 голос
/ 12 января 2011

Существует 3 свойства Extended MAPI, которые имеют дело с состоянием сообщения для ответа на / переадресовано:

PR_ICON_INDEX (0x10800003) PR_LAST_VERB_EXECUTED (0x10810003) PR_LAST_VERB_EXECUTION_TIME (0x108200 * * 100 * 100 * *)Outlook 2007/2010, используйте объект PropertyAccessor:

http://msdn.microsoft.com/en-us/library/bb176395(office.12).aspx

Если выполняется отправка, свойство MailItem.Sent по-прежнему будет иметь значение False.

0 голосов
/ 12 января 2011
MAPIFolder inbox = Application.Session.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
Items unreadItems = inbox.Items.Restrict("[UnRead] = true");

foreach (MailItem mail in unreadItems)
{
    // Do Stuff
}

Мне кажется, это очень хорошо работает.Я не знаю, что сам mailitem будет иметь эту информацию.Вместо этого вы можете фильтровать папку olFolderSentMail .

...