2017-04-25 20 views
0

私の会社で最も簡単なことは、メールを取り出すことです。私はImapを試しました - 成功しませんでした。(ImapXは全く接続されておらず、エラーは表示されません)、私はEWSに来ました。Exchangeへの接続方法

しかし、いくつかのvoo-doo魔法も関係しています。 そしてここではいくつかのエラーのコードです:

 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
     service.TraceEnabled = true; 
     service.TraceFlags = TraceFlags.All; 
     service.UseDefaultCredentials = true; 

     service.Url = new Uri("https://some.com/EWS/Exchange.asmx"); // The request failed. Unable to connect to the remote server 
     var folder = Folder.Bind(service, WellKnownFolderName.Inbox); 

     ///////////////////another try 
     ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
     service.TraceEnabled = true; 
     service.TraceFlags = TraceFlags.All; 
     service.UseDefaultCredentials = true; 

     service.AutodiscoverUrl("[email protected]"); // Discover server not found 
     var folder = Folder.Bind(service, WellKnownFolderName.Inbox); 

はしかし、私は、WSDLバージョンに接続することができるよ:

 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
     service.TraceEnabled = true; 
     service.TraceFlags = TraceFlags.All; 
     service.UseDefaultCredentials = true; 

     service.Url = new Uri("https://some.com:444/EWS/Services.wsdl");//Wow! It worked. 
     var folder = Folder.Bind(service, WellKnownFolderName.Inbox);//duh, Method Not Allowed ........ 
     return null; 

一体私はEWSへの接続方法を教えてください。私はOutlookを介して接続することができ、私のドメインアカウントのAutodiscover.xmlファイルからこれらすべてのアドレスを取得しました。この質問は私の頭を吹く。ここで

UPDATE

は、IMAPサーバとの一例です:

var client = new ImapX.ImapClient("imap.some.com", 993, true); 
client.Connect(); //just do nothing. nothing is connected, no errors. 
+0

あなたが試したことと何が問題だったのかを説明する必要があります。 Outlookは接続にWebサービスを使用せず、IMAP4を使用します –

+0

あなたのコードに関して - WebサービスはWSDLによって定義されます。 「WSDLバージョン」はありません。 WSDL URLを使用してプロキシを生成する場合、URLを指定する必要はなく、プロキシ自体にデフォルトのアドレスとして格納されます –

+0

最後に、最初と2番目のURLは同じポートを使用していません。 SSLはポート443を使用します。2番目のURLはポート444を使用します –

答えて

0

あなたはautodisocver EWSのWebサービス用に設定していることを確認します。交換検出設定を分析するために、Microsoftテスト接続ツールを使用します。

https://testconnectivity.microsoft.com/

+0

クレデンシャルを第三者に渡すのではなく、より安全な方法でチェックできますか? – eocron

+0

私は同意します。免責条項で述べたとおり、このツールを使用する目的でテストアカウントを作成し、接続テストを完了した直後にこのアカウントを削除することを強く推奨します。可能であれば、テストアカウントを作成してみてください。 – vendettamit

0
public static class ExchangeServerService 
{ 
    // The following is a basic redirection validation callback method. It 
    // inspects the redirection URL and only allows the Service object to 
    // follow the redirection link if the URL is using HTTPS. 
    private static bool RedirectionUrlValidationCallback(string redirectionUrl) 
    { 
     // The default for the validation callback is to reject the URL. 
     bool result = false; 

     Uri redirectionUri = new Uri(redirectionUrl); 

     // Validate the contents of the redirection URL. In this simple validation 
     // callback, the redirection URL is considered valid if it is using HTTPS 
     // to encrypt the authentication credentials. 
     if (redirectionUri.Scheme == "https") 
     { 
      result = true; 
     } 

     return result; 
    } 

    public static ExchangeService ConnectToService() 
    { 
     try 
     { 
      ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 
      service.Credentials = new NetworkCredential(@"email", "password"); 
      service.AutodiscoverUrl(@"email", RedirectionUrlValidationCallback); 

      return service; 
     } 
     catch (Exception ex) 
     { 
      // log exception maybe 
      return null; 
     } 
    } 
} 

ように使用:*すべて*電子メールクライアントがPOP3およびIMAP4を使用してExchangeに接続できることを考えると

var ESserver = ExchangeServerService.Connect(); 
+1

これはMSDNからの正確なコピーであり、これは動作していないことを知っています。検出サーバーが見つかりません。 – eocron

+0

これは実際の実装ではない問題です。 –

+0

はい、それは私の問題です。だからこそ質問が浮上した。 – eocron

関連する問題