C# Can';在C语言中使用EWS发送或阅读电子邮件#
我目前正在一台无法调试的机器上开发。C# Can';在C语言中使用EWS发送或阅读电子邮件#,c#,.net,xml,exchangewebservices,C#,.net,Xml,Exchangewebservices,我目前正在一台无法调试的机器上开发。 此时,我正试图用我的web应用程序处理一些与电子邮件相关的问题 发送电子邮件 从功能邮箱检索电子邮件 出于某种原因,两者似乎都不可能实现。 我编写了这些代码块,看看是否可以启动并运行它 sendmails函数在msg.Send()部分崩溃。我在msg.ToRecipients.Address、msg.Subject和msg.Body上做了一个日志,它们都填写了我需要的数据 GetEmailsFromFolder函数一点击FindItemsResults=se
此时,我正试图用我的web应用程序处理一些与电子邮件相关的问题
sendmails
函数在msg.Send()部分崩溃。我在msg.ToRecipients.Address
、msg.Subject
和msg.Body
上做了一个日志,它们都填写了我需要的数据
GetEmailsFromFolder
函数一点击FindItemsResults=service.FindItems(收件箱,fView)就会中断代码>
注意1:不同位置上有一台Exchange服务器。每个人都使用他们的凭据登录并访问他们的帐户。
注意2:在两次崩溃中,我都得到了以下异常(我设法记录了该异常):
Microsoft.Exchange.WebServices.Data.ServiceRequestException:异常
从服务收到的响应不包含有效的XML。
System.Xml.XmlException:缺少根元素。在
System.Xml.XmlTextReaderImpl.Throw(异常e)位于
System.Xml.XmlTextReaderImpl.ParseDocumentContent()位于
System.Xml.XmlTextReader.Read()处的System.Xml.XmlTextReaderImpl.Read()
在System.Xml.XmlCharCheckingReader.Read()处
Microsoft.Exchange.WebServices.Data.EwsXmlReader.Read()位于
Microsoft.Exchange.WebServices.Data.EwsXmlReader.Read(XmlNodeType
nodeType)在
Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ReadXmlDeclaration(EwsServiceXmlReader
读卡器)---内部异常堆栈跟踪的结束---at
Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ReadXmlDeclaration(EwsServiceXmlReader
读者)在
Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ReadSoapFault(EwsServiceXmlReader
读者)在
Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException
webException)在
Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetNewsHttpWebResponse(IEwsHttpWebRequest
(请求)在
Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndItemRequest(IEwsHttpWebRequest&
(请求)在
Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest1.Execute()
在
Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable1
items、FolderId parentFolderId、Nullable1 messageDisposition、,
Nullable1 SendInvitationMode,ServiceErrorHandling errorHandling)位于
Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId
parentFolderId,Nullable1消息处置,Nullable1
发送邀请模式)在
Microsoft.Exchange.WebServices.Data.EmailMessage.InternalSend(FolderId
parentFolderId,MessageDisposition MessageDisposition)位于
Microsoft.Exchange.WebServices.Data.EmailMessage.Send()位于
T.App.Factory.Helper.ExchangeWebServiceHelper.SendEmails(字符串到,
字符串主题、字符串正文)中的
D:\T.App\Factory\Helper\ExchangeWebServiceHelper.cs:at的第77行
中的PADAccountSwitching.App.Factory.NewBankFactory.DownloadRequests()
D:\T.App\Factory\NewBankFactory.cs:第313行
听起来你好像没有打到服务。这通常在返回常规响应(如404 HTML页面)时发生。我建议您以某种方式记录返回的内容。也检查一下:可能是@Juan的重复,我已经阅读了您的答案,它可能与XML有关。您能否告诉我,为了查看返回的内容,我特别需要记录哪些值?否则,我需要花很长时间才能找到XML的样子。我通常使用wireshark或fiddler之类的嗅探器来查找问题的根本原因。比较工作地点和非工作地点的结果将有助于发现问题。一个好的响应应该以200 Done状态结束。我会检查你的IE浏览器、防火墙和病毒检查器,看看端口或服务器是否被阻止。
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;
service.Credentials = new WebCredentials(@"DOM\User1", "password");
return service;
}
public static void SendEmails(string to, string subject, string body)
{
ExchangeService service = CreateConnection();
EmailMessage msg = new EmailMessage(service);
msg.ToRecipients.Add(to);
msg.Subject = subject;
msg.Body = new MessageBody(BodyType.HTML, body);
msg.Send();
}
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, mailbox.ToString());
FindItemsResults<Item> results = service.FindItems(inbox, fView);
return results;
}
<wsdl:definitions targetNamespace="http://schemas.microsoft.com/exchange/services/2006/messages">
<wsdl:types>
<xs:schema>
<xs:import namespace="http://schemas.microsoft.com/exchange/services/2006/messages" schemaLocation="messages.xsd"/>
</xs:schema>
</wsdl:types>
<wsdl:message name="UploadItemsSoapIn">
<wsdl:part name="request" element="tns:UploadItems"/>
<wsdl:part name="Impersonation" element="t:ExchangeImpersonation"/>
<wsdl:part name="MailboxCulture" element="t:MailboxCulture"/>
<wsdl:part name="RequestVersion" element="t:RequestServerVersion"/>
</wsdl:message>
<wsdl:message name="UploadItemsSoapOut">
<wsdl:part name="UploadItemsResult" element="tns:UploadItemsResponse"/>
<wsdl:part name="ServerVersion" element="t:ServerVersionInfo"/>
</wsdl:message>
... more here ...
</wsdl:definitions>