2010-12-11 12 views
1

私は、メールアイテムの送信者のSMTP電子メールアドレスを取得するOutlookプラグインを作成しました。それはほとんどのマシンでうまくいきますが、交換ユーザーからの電子メールのSMTPアドレスを解決しようとするたびにCOMExceptionをスローするマシン(新しい開発マシン)が1台あります。以下は、私が使用しているコード... RecipientオブジェクトのプロパティのAddressEntryにアクセスするとき、次のCOMExceptionはが発生Outlook Interop AddressEntry例外

private string SenderEmail(MailItem item) 
{ 
    if (item == null) 
    { 
     return ""; 
    } 
    else 
    { 
     string senderEmail = string.Empty; 

     if (item.SenderEmailType.ToUpper() == "EX") 
      senderEmail = GetEmailAddressFromOU(item.SenderEmailAddress); 
     else 
      senderEmail = item.SenderEmailAddress; 

     return senderEmail; 
    } 
} 

private string GetEmailAddressFromOU(string ouName) 
{ 
    string emailAddress = string.Empty; 

    NameSpace oNS = ((Microsoft.Office.Interop.Outlook.Application)OutlookAppObj).GetNamespace("MAPI"); 
    Recipient recip = oNS.CreateRecipient(ouName); 
    recip.Resolve(); 
    ExchangeUser exUser = recip.AddressEntry.GetExchangeUser(); 

    emailAddress = exUser.PrimarySmtpAddress; 

    Marshal.ReleaseComObject(exUser); 
    Marshal.ReleaseComObject(recip); 
    Marshal.ReleaseComObject(oNS); 

    return emailAddress; 
} 

です:

メッセージ= "しようとした操作が失敗したオブジェクトができませんでした。 "

私はOutlook 2010を使用してWindows 7(64ビット)を使用していますが、この同じコードは同じOSとOutlookバージョンを持つ他のマシンで動作します。また、Windows 7(32ビット)とOutlook 2010であった以前の開発マシンでも正常に動作します。

私はStackOverflowとGoogleをすべての解決方法で検索しましたが、何も見つかりませんでした。

誰でもこの問題を解明できますか?

+0

詳細情報:問題は、送信者のLDAPパスを解決することです。新しいメールの宛先ボックスにLDAPパスを入力して「名前の確認」をクリックすると、正しいユーザーに解決されます。私のマシンで、「名前の確認」をクリックすると「Microsoft Outlookは認識しません」というメッセージが表示されます。 –

答えて

0

問題の原因はまだわかりませんが、Outlookで自分のすべての電子メールアカウントを削除して再追加すると問題は解決しました。

関連する問題