この Microsoft ページは、UseDefaultCredentials プロパティを true に設定することにより、Exchange サーバーとの通信にログイン名とパスワードが不要であることを示しています。しかし、それは私の経験ではありません。
私のコードは、サービスと呼ばれる ExchangeService のインスタンスを作成します。
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
次のように資格情報を手動で設定すると、すべてが正常に機能します。
service.Credentials = new WebCredentials("my@email.address", "my password");
ただし、その行を削除して次の行に置き換えると、コードが機能しません。
service.UseDefaultCredentials = true;
解決策を検索して検索しましたが、具体的なものは何も見つかりません。ここで誰かが私を助けてくれたら、とても感謝しています。
編集: デフォルトの資格情報の代わりに自分の資格情報を使用しようとしました。
string smtpaddress = "somesharedsmtp@domain.com";
es.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
es.Credentials = new WebCredentials("myemail", "mypassword");
es.AutodiscoverUrl(smtpaddress, RedirectionCallback);
FolderId SharedMailbox = new FolderId(WellKnownFolderName.Inbox, "somesharedsmtp@domain.com");
Folder sharedInbox = Folder.Bind(es, SharedMailbox);
この時点で、受信トレイの詳細を含む sharedInbox を確認できます。未読メール数などがわかります。
でもアクセスしたら
ItemView itemView = new ItemView(100);
FindItemsResults<Item> findResults1 = es.FindItems(pqInbox.Id, itemView);
「SMTP アドレスにメールボックスが関連付けられていません」という例外が発生します