Exchange Web服务:UseDefaultCredentials属性

时间:2013-03-18 16:18:19

标签: c# exchange-server exchangewebservices credentials

This Microsoft page表示通过将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地址没有与之关联的邮箱”

2 个答案:

答案 0 :(得分:3)

我在这种情况下的经验是,如果您设置service.UseDefaultCredentials = true,您的电脑登录将被拍摄。如果您在与Exchange服务器相同的ActiveDirectory结构中,那么这种方法非常有效。如果您尝试从ADS外部连接到Exchange服务器,则必须手动设置凭据。

当我在工作时,我正在使用我的工具的defaultcredentials。如果我在家里连接,我必须设置凭据。

希望能帮到你......

答案 1 :(得分:1)

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

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