2016-12-23 5 views
0

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; 
} 
+0

Haben Sie versucht, indem Sie: 'service.Credentials = new WebCredentials (your_user, your_pass);'? – McNets

+0

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. –

+0

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

Antwort

0

Nach Microsoft Dev Center, Sie nicht .UseDefaultCredentials = true für Exchange Online verwenden können.

Bemerkungen

Einstellung der UseDefaultCredentials Eigenschaft auf true setzt automatisch die Credentials-Eigenschaft auf einen NULL-Verweis (Nothing in Visual Basic).

Sie können nicht die Standard-Anmeldeinformationen des angemeldeten Benutzers verwendet werden, wenn die Mailbox des Benutzers in Exchange Online oder Exchange Online als Teil von Office 365 gehostet wird. Verwenden Sie stattdessen die Credentials-Eigenschaft, um die Anmeldeinformationen des Benutzers festzulegen. Die Anmeldeinformationen des Benutzers müssen sich im Benutzerprinzipal Name (UPN) für Exchange Online befinden.

+0

Ich bin nicht wirklich gut mit Exchange etc .. Wir verwenden Outlook mit einem Microsoft Exchange-Konto. Ich denke nicht, dass wir die Office 365-Version verwenden, nur das Outlook-Tool. –

+0

Wo befindet sich Ihr Exchange Server? Lokal in Ihrem Datacenter? – McNets

+0

Nicht auf demselben Server, auf dem meine App gehostet wird. Nehmen wir an, meine App wird auf Server A sein und Exchange ist auf Server B –

Verwandte Themen