从EWS调用得到的响应是无效的XML吗?

Ram*_*esh 3 exchangewebservices

我使用EWS API连接Exchange服务器.连接已建立,但我没有收到任何回复.

我得到异常"从服务收到的响应不包含有效的XML."

内部异常是"此XML文档中禁止DTD".

我没有得到什么是DTD?

qui*_*dry 5

我得到了你的问题,直到(经过多次试验和错误):

  1. 将TraceEnabled设置为true,这会将来回消息转储到控制台.

  2. 我使用的URL 的https://yourexchangeserver/EWS/Exchange.asmx
    如我的工作使用BPOS,在亚太地区,所以:https://red003.mail.apac.microsoftonline.com/EWS/Exchange.asmx

  3. 请求特定服务版本,例如ExchangeService服务=新ExchangeService(ExchangeVersion.Exchange2007_SP1)

第1步让我超越了你的第一个问题 - 它提供了Outlook Web Access html页面.
第2步让我看到它正在请求2010_Sp1,但不支持该版本.
第3步让"Hello world"工作/发送.

另一个注意事项,如果您使用该服务器,我无法使用除2007 SP1之外的任何版本,因此,不会自动发现该URL.

public static string sendMail_BPOS_EWS()
        {
              try
            {
                ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
                service.UseDefaultCredentials = false;
                service.Credentials = new WebCredentials("some_address@server.com", "password");

                service.Url = new Uri("https://red003.mail.apac.microsoftonline.com/EWS/Exchange.asmx");
                Console.WriteLine(service.Url);

                service.TraceEnabled = true;

                EmailMessage mail = new EmailMessage(service);
                mail.From = new EmailAddress("from_address@server.com");
                mail.ToRecipients.Add("to_address@server.com");
                mail.Subject = "Email Subject";
                mail.Body = "Email Body";

                mail.Send();
                return "sent";
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
        }
Run Code Online (Sandbox Code Playgroud)