2017-04-25 55 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

鉴于*所有*电子邮件客户端可以使用POP3和IMAP4连接到Exchange ,你应该解释你所尝试的是什么以及问题是什么。 Outlook不使用Web服务进行连接,它使用IMAP4 –

+0

至于你的代码 - Web服务是由WSDL *定义的。没有“WSDL版本”。如果您使用WSDL URL生成代理,则甚至不需要指定URL,它将作为默认地址存储在代理本身中。 –

+0

最后 - 您的第一个和第二个URL不*使用相同的端口。 SSL使用端口443.第二个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; 
     } 
    } 
} 

这样使用它:

var ESserver = ExchangeServerService.Connect(); 
+1

我知道这是从MSDN完全复制,并且没有 - 这是行不通的。未找到发现服务器。 – eocron

+0

这就是你的问题,而不是实际的实现。 –

+0

是的,这是我的问题。这就是为什么出现问题的原因。 – eocron

相关问题