Как получить электронную почту отправителя, если тип электронной почты EX для Outlook? - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь получить адрес электронной почты отправителя для почтового ящика Outlook через код C #.Я попытался эта ссылка , но я получаю "Ссылка на объект не установлена ​​на экземпляр объекта" для строки senderEmail = objAddressentry.GetExchangeUser().PrimarySmtpAddress.Мой код выглядит следующим образом:

Outlook.Application oApp = new Outlook.Application();
Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
Outlook.MailItem olMail = new Outlook.MailItem();

if (olMail.SenderEmailType == "EX")
{

   var objReply = olMail.Reply();
   var objRecipient = objReply.Recipients[1]; 

   var strEntryId = objRecipient.EntryID;

   var objAddressentry = oNS.GetAddressEntryFromID(strEntryId);
   string senderEmail = objAddressentry.GetExchangeUser().PrimarySmtpAddress;
}

Я буду признателен за любую помощь.

Если это поможет, я наткнулся на эту ссылку , но мой AddressEntryUserType выглядит как olExchangeDistributionListAddressEntry, поэтому элемент управления не входит в ветвь If.

1 Ответ

0 голосов
/ 25 февраля 2019

Как указывалось ранее, мой код правильный.Выдает исключение «Ссылка на объект не установлена ​​для экземпляра объекта» для objAddressentry.GetExchangeUser(), когда AddressEntryUserType для Sender имеет тип olExchangeDistributionListAddressEntry.Модифицированный код выглядит следующим образом:

if (olMail.SenderEmailType == "EX")
   {

         var objReply = olMail.Reply();
         Outlook.Recipient objRecipient = objReply.Recipients[1]; 
         string strEntryId = objRecipient.EntryID;
         Outlook.AddressEntry objAddressentry = oNS.GetAddressEntryFromID(strEntryId);

         if (objAddressentry != null)
         {

             Outlook.ExchangeUser eu = objAddressentry.GetExchangeUser();
             if (eu != null)
                senderEmail = eu.PrimarySmtpAddress; 

          }

 }
...