Nebenbei bemerkt 1 zuzugreifen: Ich habe dieses Thema, bevor sie durch ein paar Mal kommen gesehen, aber die meisten> sind ungelöst und der Rest ist nicht wirklich auf mein Problem bezogen.Microsoft.Exchange.WebServices.Data.ServiceResponseException: Kann ein Konto oder ein Postfach
Nebenbei bemerkt 2: Sie durch die Nutzung der Parameter nicht verwirrt, ich im Code einige Anpassungen haben, so dass es SO passen würde. Die Parameter sind hier nicht das Problem.
Ich versuche, einen Weg für mich zu entwickeln E-Mails aus einer Mailbox zu lesen. An dieser Stelle möchte ich generell auf die Mailboxen zugreifen, also sehe ich, ob ich die Mails in meiner eigenen Mailbox lesen kann. Aber etwas scheint falsch zu sein. Sobald es die service.FindItems(inbox, fView)
Methode auszuführen versucht, wird es mir die folgende Fehlermeldung ausgeben:
Microsoft.Exchange.WebServices.Data.ServiceResponseException: Unable to access an account or mailbox.
An diesem Punkt bin ich nicht sicher, ob es mit Anmeldeinformationen zu tun hat, oder mit Zugangsrechte. Unten ist der Code, den ich verwende.
ich das Auslösen einer Hilfsmethode I erstellt:
FindItemsResults<Item> items = ExchangeWebServiceHelper.GetEmailsFromFolder(inboxName);
Im ExchangeWebServiceHelper habe ich die folgenden zwei Methoden:
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;
}
Haben Sie versucht, indem Sie: 'service.Credentials = new WebCredentials (your_user, your_pass);'? – McNets
Ich habe darüber nachgedacht, aber was setze ich den Benutzernamen und das Passwort, wenn Sie die Anwendung erstellen, wo mehrere Personen dies verwenden? Ich werde versuchen, danach zu suchen, aber ich habe gelesen, dass ich "UseDefaultCredentials" technisch verwenden kann, wenn Sie mit Exchange arbeiten. –
Ist diese Windows Forms App oder ASP.Net App? Wenn es Asp.Net App ist, müssen Sie Identitätswechsel mit Windows-Authentifizierung konfigurieren. – Esko