Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用MS Exchange Server 2010 SP2的web服务以编程方式发送电子邮件_C#_.net_Email_Exchangewebservices_Exchange Server 2010 - Fatal编程技术网

C# 无法使用MS Exchange Server 2010 SP2的web服务以编程方式发送电子邮件

C# 无法使用MS Exchange Server 2010 SP2的web服务以编程方式发送电子邮件,c#,.net,email,exchangewebservices,exchange-server-2010,C#,.net,Email,Exchangewebservices,Exchange Server 2010,我得到了一个应用程序(C#),它使用MSExchangeServer2010SP2的web服务发送电子邮件。它以前工作得很好。但是,就在两周前,我遇到了问题。有时代码可以发送电子邮件,但有时不能。我得到的错误消息如下(完整的错误消息显示在最后) 我的代码如下 string ewsUrl = "https://xxxx.xxxx.com/ews/Exchange.asmx"; string userName = "xxxx"; string password = "xxxx"; string to

我得到了一个应用程序(C#),它使用MSExchangeServer2010SP2的web服务发送电子邮件。它以前工作得很好。但是,就在两周前,我遇到了问题。有时代码可以发送电子邮件,但有时不能。我得到的错误消息如下(完整的错误消息显示在最后)

我的代码如下

string ewsUrl = "https://xxxx.xxxx.com/ews/Exchange.asmx";
string userName = "xxxx";
string password = "xxxx";
string to = "xxxx@xxxx.com";
string cc = "xxxx@xxxx.com";

ExchangeService service = new ExchangeService();
service.Url = new Uri(ewsUrl);
service.UseDefaultCredentials = true;
service.Credentials = new WebCredentials(userName, password);

EmailMessage message = new EmailMessage(service);
message.Subject = subject;
message.Body = bodyHtml;
message.ToRecipients.Add(to);
message.CcRecipients.Add(cc);

message.SendAndSaveCopy();
The request failed. Unable to connect to the remote server
    at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(HttpWebRequest& request)
    at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.InternalExecute()
    at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
    at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable`1 items, FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode, ServiceErrorHandling errorHandling)
    at Microsoft.Exchange.WebServices.Data.ExchangeService.CreateItem(Item item, FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode)
    at Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode)
    at Microsoft.Exchange.WebServices.Data.EmailMessage.InternalSend(FolderId parentFolderId, MessageDisposition messageDisposition)
    at Microsoft.Exchange.WebServices.Data.EmailMessage.Send()
我不知道出了什么问题。我相信这个URL是正确的,它在某个时候是有效的,而不是在另一个时候。我在互联网上搜索过,但没有找到任何解决方案这是关于服务器配置的吗?我已经和IT人员谈过了,但他似乎对web服务一无所知。请帮帮我。下面是完整的错误消息

string ewsUrl = "https://xxxx.xxxx.com/ews/Exchange.asmx";
string userName = "xxxx";
string password = "xxxx";
string to = "xxxx@xxxx.com";
string cc = "xxxx@xxxx.com";

ExchangeService service = new ExchangeService();
service.Url = new Uri(ewsUrl);
service.UseDefaultCredentials = true;
service.Credentials = new WebCredentials(userName, password);

EmailMessage message = new EmailMessage(service);
message.Subject = subject;
message.Body = bodyHtml;
message.ToRecipients.Add(to);
message.CcRecipients.Add(cc);

message.SendAndSaveCopy();
The request failed. Unable to connect to the remote server
    at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(HttpWebRequest& request)
    at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.InternalExecute()
    at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
    at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable`1 items, FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode, ServiceErrorHandling errorHandling)
    at Microsoft.Exchange.WebServices.Data.ExchangeService.CreateItem(Item item, FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode)
    at Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode)
    at Microsoft.Exchange.WebServices.Data.EmailMessage.InternalSend(FolderId parentFolderId, MessageDisposition messageDisposition)
    at Microsoft.Exchange.WebServices.Data.EmailMessage.Send()
我认为您需要在
message.CcRecipients.add(cc)之间添加上述代码

message.SendAndSaveCopy()

您要连接到哪个端口?“.”意味着443。该端口可从您的Web服务器访问吗?您是否尝试过使用AutoDiscoveryURL功能?我也必须指定端口吗?我的URL只是
”https://email.companydomain.com/ews/Exchange.asmx“
;我尝试过自动发现URL功能,但效果越来越差。我的服务器阻止该功能,错误消息建议我使用AutoDiscoveryRedirectionUrlValidationCallback。然后我试试看。但仍然没有成功。我的回电在下面<代码>静态boolRedirectionUrlValidationCallback(字符串redirectionUrl){return(redirectionUrl==)https://autodiscover-s.companydomain.com/autodiscover/autodiscover.xml);}
这是否正确?请建议此操作完全绕过服务器证书验证,这可能会很危险,具体取决于您的环境。感谢您的帮助!你能告诉我上面的代码是什么吗?可以用吗?Guvante所说的“绕过服务器证书验证”是什么意思??谢谢。@Guvante的意思是上面的代码不检查您收到的证书的有效性。正如您所知,该委托始终返回true,因此,如果该信息不正确,就不会被捕获。这是一种安全风险。我会用它来测试,但不能超过这个范围。如果这能解决您的问题,那么有一些关于如何正确检查证书的文章。