4

此 Microsoft 页面表明,通过将 UseDefaultCredentials 属性设置为 true,无需登录名和密码即可与 Exchange 服务器通信。然而,这不是我的经验。

我的代码创建了一个名为 service 的 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 地址没有与之关联的邮箱”

4

2 回答 2

3

我在这种情况下的经验是,如果您设置 service.UseDefaultCredentials = true 您的电脑登录将被采取。如果您在与 exchangeserver 相同的 ActiveDirectory 结构中,这将是完美的。如果您尝试从 ADS 外部连接到交换服务器,则必须手动设置凭据。

我在工作时为我的工具使用默认凭据。如果我从家里连接,我必须设置凭据。

希望对你有帮助...

于 2013-03-19T12:14:28.087 回答
2

从 MSDN 文档中,Exchange Online 中忽略了 UseDefaultCredentials。您必须为 Exchange Online 指定凭据。

http://msdn.microsoft.com/en-us/library/office/microsoft.exchange.webservices.data.exchangeservicebase.usedefaultcredentials(v=exchg.80).aspx

于 2014-11-20T17:42:06.503 回答