Sidenote 1: Я видел эту тему приходят в несколько раз, прежде чем, но большинство> остаются нерешенными, а остальные не действительно связано с моей проблемой.Microsoft.Exchange.WebServices.Data.ServiceResponseException: Невозможно получить доступ к учетной записи или почтовый ящик
Sidenote 2: Не пугайтесь использованием параметров, я сделал некоторые изменения в коде, так что будет вписываться в SO. Параметры здесь не являются проблемой.
Я пытаюсь разработать способ для меня, чтобы читать сообщения электронной почты из функционального ящика. На данный момент я хочу получить доступ к почтовым ящикам в целом, поэтому я вижу, могу ли я читать письма в своем почтовом ящике. Однако что-то кажется неправильным. Как только он пытается запустить метод service.FindItems(inbox, fView)
, это даст мне следующее сообщение об ошибке:
Microsoft.Exchange.WebServices.Data.ServiceResponseException: Unable to access an account or mailbox.
На данный момент я не уверен, имеет ли это сделать с учетными данными, или с права доступа. Ниже приведен код, который я использую.
Я запуская вспомогательный метод, который я создал:
FindItemsResults<Item> items = ExchangeWebServiceHelper.GetEmailsFromFolder(inboxName);
В ExchangeWebServiceHelper я следующие два метода:
public static ExchangeService CreateConnection()
{
string url = WebConfigurationManager.AppSettings["EWSAsmxUrlNp"];
ServicePointManager.ServerCertificateValidationCallback = delegate(
Object obj,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors errors)
{
return true;
};
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
service.Url = new Uri(url);
service.UseDefaultCredentials = true;
return service;
}
public static FindItemsResults<Item> GetEmailsFromFolder(Mailbox mailbox)
{
ExchangeService service = CreateConnection();
FolderView fView = new FolderView(100);
fView.PropertySet = new PropertySet(BasePropertySet.IdOnly, FolderSchema.DisplayName);
FolderId inbox = new FolderId(WellKnownFolderName.Inbox);
FindItemsResults<Item> results = service.FindItems(inbox, fView);
Logger.Log(mailbox.ToString());
Logger.Log(results.TotalCount.ToString());
return results;
}
Вы пытались установить: 'service.Credentials = new WebCredentials (your_user, your_pass);'? – McNets
Я думал об этом, но чем я устанавливаю имя пользователя и пароль, когда вы создаете приложение, в котором его используют несколько человек? Я попытаюсь его найти, но я прочитал, что могу технически использовать 'UseDefaultCredentials', когда вы работаете с Exchange. –
Это приложение Windows Forms или приложение ASP.Net? Если это приложение Asp.Net, вам нужно настроить олицетворение с помощью проверки подлинности Windows. – Esko