Получить SenderEmailAddress из почтового элемента в режиме создания

Я извлекаю этот mailItem в режиме создания, но когда я проверяю mailItem.SenderEmailAddress, он равен NULL, но все остальные свойства имеют там значения (например: - body, body format, to, ....). Как мне получить адрес электронной почты отправителя ИЗ ПОЧТОВОГО ОТДЕЛЕНИЯ САМОСТОЯТЕЛЬНО?

Я использую Visual Studio 2013 с Addin Express v.7.7.4087.

Вот код: -

        Outlook.Inspector currentInspector = null;
        Outlook.MailItem mailItem = null;
        Outlook.Folder outboxFolder = null;
        Outlook.Recipients recipients = null;

        const string PR_SMTP_ADDRESS = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E";

        currentInspector = Globals.ObjOutlook.ActiveInspector();

        if (currentInspector != null)
            {

            if (currentInspector.CurrentItem is Outlook.MailItem)
            {
                mailItem = currentInspector.CurrentItem as Outlook.MailItem;
                mailItem.Save();
                string sender = mailItem.SenderEmailAddress; //This is null 
            }
        }

P.S Мне приходится иметь дело с несколькими почтовыми ящиками. поэтому я не могу получить текущий адрес пользователя, используя пространство имен. Он всегда возвращает мне адрес пользователя основного почтового ящика.

См. следующий снимок экрана: введите здесь описание изображения

Заранее спасибо.

Кушан Рандима


person Kushan Randima    schedule 13.08.2015    source источник


Ответы (2)


Вы отправляете, используя несколько учетных записей Exchange? Используйте MailItem.SendUsingAccount, затем прочитайте Account.SmtpAddress. Если это "", используйте Account.CurrentUser.AddressEntry.GetExchangeUser.PrimarySmtpAddress.

Если MailItem.SendUsingAccount == null, вы можете использовать учетную запись по умолчанию.

person Dmitry Streblechenko    schedule 13.08.2015
comment
Круто, это спасло меня. Спасибо. - person Kushan Randima; 14.08.2015
comment
когда я сохраняю почтовый элемент в самостоятельно созданной папке Outlook и возвращаю его обратно, свойство SendUsingAccount имеет значение null. Но он имеет значение перед сохранением в папке Outlook. Итак, мне удалось добавить значение SendUsingAccount в качестве свойства пользователя, прежде чем сохранить его в папке OL и прочитать после его возврата. Есть ли лучшее решение для этого? - person Kushan Randima; 24.08.2015
comment
Как сохранить сообщение в эту папку? - person Dmitry Streblechenko; 24.08.2015

Используйте свойство CurrentUser Пространство имен для получения текущего пользователя, вошедшего в систему, в качестве объекта Recipient. Свойство Address получателя. class возвращает строку, представляющую адрес электронной почты получателя.

person Eugene Astafiev    schedule 13.08.2015
comment
Спасибо за беспокойство. Поскольку я имею дело с несколькими почтовыми ящиками, наше решение мне не подойдет. У вас есть другие предложения, пожалуйста? Я тоже отредактировал вопрос. Пожалуйста, ознакомьтесь с изменениями. Еще раз спасибо - person Kushan Randima; 13.08.2015
comment
: Если вы заинтересованы, зафиксируйте это: stackoverflow.com/documentation/outlook-addin/commit - person Kushan Randima; 27.07.2016