2017-05-25 14 views
0

私は送信者の電子メールアドレスを取得するためにOutlook :: _ MailItemオブジェクトのget_SenderEmailAddress()を使用しています。ただし、ユーザーがアクティブなディレクトリユーザーの場合、recipientitem.addressは/o = organizationg/ou = Exchange管理グループ/ cn =受信者/ cn = xxxxxxxxxxのようになります。ユーザーがアクティブなディレクトリユーザーである場合、送信者の電子メールアドレスを取得するにはどうすればよいですか?

送信者のメールアドレスを取得する他の方法はありますか?

+1

[正しくアドレスを返さない見通しVBA Mailitem財産SenderEmailAddress]の可能な重複(https://stackoverflow.com/questions/25746770/outlook-vba-mailitem-property-senderemailaddress-not-returning-address-correctly ) – niton

答えて

0

"EX"( "SMTP"とは対照的に)タイプの完全に有効なメールアドレスのようです。

SMTPアドレスを使用する場合は、MailItem.Sender.GetExchangeUser().PrimarySmtpAddressを使用します。ヌルと例外を処理する準備をしてください。 しかし、最初にMailItems.SenderEmailTypeプロパティを確認してください。 "SMTP"の場合は、SenderEmailAddressを引き続き使用できます。

0

私はこれを使用して送信者メールアドレスを取得しています。

private string GetSenderSMTPAddress(Outlook.MailItem mail) 
    { 
     try 
     { 
      string PR_SMTP_ADDRESS = 
        @"http://schemas.microsoft.com/mapi/proptag/0x39FE001E"; if (mail == null) 
      { 
       throw new ArgumentNullException(); 
      } 
      if (mail.SenderEmailType == "EX") 
      { 
       Outlook.AddressEntry sender = 
        mail.Sender; 
       if (sender != null) 
       { 
        //Now we have an AddressEntry representing the Sender 
        if (sender.AddressEntryUserType == 
         Outlook.OlAddressEntryUserType. 
         olExchangeUserAddressEntry 
         || sender.AddressEntryUserType == 
         Outlook.OlAddressEntryUserType. 
         olExchangeRemoteUserAddressEntry) 
        { 
         //Use the ExchangeUser object PrimarySMTPAddress 
         Outlook.ExchangeUser exchUser = 
          sender.GetExchangeUser(); 
         if (exchUser != null) 
         { 
          return exchUser.PrimarySmtpAddress; 
         } 
         else 
         { 
          return null; 
         } 
        } 
        else 
        { 
         return sender.PropertyAccessor.GetProperty(
          PR_SMTP_ADDRESS) as string; 
        } 
       } 
       else 
       { 
        return null; 
       } 
      } 
      else 
      { 
       return mail.SenderEmailAddress; 
      } 
     } 
     catch (Exception ex) 
     { 
      return null; 
     } 
    } 
関連する問題