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>