返回首页

简介
最近,我曾在一个自定义MailCli​​ent项目。在此,我们用这是相当新的Exchange Server 2007所提供的早期预警系统的API。在发展过程中,我们面临的许多问题。在互联网上,你会得到了不少成果,但他们很分散的,其中一些是丢失。在这里,我想分享我的knowledgenbsp,大家尽量提供所有必需的信息,并在本系列的示例代码。在每一个部分,我将采取一个功能,尝试探索。任何建议都将得到高度赞赏。什么是Exchange Server吗?
Exchange Server是一个消息传递系统,包括邮件服务器,电子邮件客户端和群件应用。一般用于与Microsoft Outlook和Exchange Server是与Active Directory和即时通讯的紧密集成。
信息系统包括创建,存储,维护不同的种类,比如电子邮件消息,语音信箱,传真,图像等Exchange服务器API的历史{S0}什么是Exchange Web服务
EWS(Exchange Web服务)是一种应用程序编程接口,可以通过使用不同的开发人员沟通与Microsoft Exchange Server 2007。
这个API公开为SOAP(简单对象访问协议) - 基于Web的服务,这意味着一个请求必须发送一个HTTP POST请求中的早期预警系统利用SOAP以XML形式的请求。预警系统本身在相同的方式使用SOAP和XML消息在HTTP响应对象响应。 EWS是一个Exchange客户端访问服务器(CAS)的通过ASP.NET 2.0 Web服务暴露。这可以代表形象如下:客户说话的SOAP XML到早期预警系统

回答

评论会员:何塞普玛丽亚罗伊 时间:2011/12/27
此代码不工作为早期预警系统1.1。请更新
评论会员:supremeben 时间:2011/12/27
您好,
怎样才能从contact@domain.com发送电子邮件和名称将"Jhon史密斯"或"嫁给史密斯"。
orher的话我怎么能显示从名称不同。
谢谢
评论会员:!Brij 时间:2011/12/27
supremeben写道:怎样才能从contact@domain.com发送电子邮件和名称将"Jhon史密斯"或"嫁给史密斯"
。每封电子邮件是一个名称相关联。如果你想在不同的名字,你应该更新"名称"属性,然后使用
干杯!!
Brij
访问我的博客:

{A}
评论会员:supremeben 时间:2011/12/27
是它可以给我的示例代码
评论会员:?Feuxxx 时间:2011/12/27
您好,

我来给你,因为我有一个小问题,正成为迫切需要我的项目之一,在工作中。

我卡住,就变得非常迫切,我寻求的方式从我的收件箱中列出的所有电子邮件从主Exchange服务器,并读取其内容和头,....{ BR} 我用的是类与LDAP连接的预警系统,我可以发送电子邮件,日历事件上市,进入收件箱(或所以,我认为)。
能否请您帮我,它的十分紧迫的
评论会员:Brij 时间:2011/12/27
Feuxxx写道:我要求的方式,从我的收件箱中列出的所有电子邮件从主Exchange服务器,并阅读其内容,并头,....{ BR}
您可以获取的所有项目,在收件箱preseent。你可以找到所需的所有项目使用EWS的方法"FindItem"方法。您是否尝试过呢?
或者你正在寻找别的东西吗?干杯!!
Brij
访问我的博客:

{A}
评论会员:Feuxxx 时间:2011/12/27
您好,
我测试FindItem,我承认我不明白,EWS类PHP是很复杂的的,有我完全被封锁,停止和我的专业项目,当务之急是,我可以访问此电子邮件:(
评论会员:游客 时间:2011/12/27
NehalSS|嗨,这个漂亮的文章感谢Brij。但我需要你的帮助,了解此错误的原因behid。"请求失败的远程服务器返回错误:(401)未经授权"。以下是我的测试代码。ExchangeService服务=新ExchangeService(ExchangeVersion.Exchange2007_SP1);service.TraceEnabled=TRUE;service.Credentials=新的NetworkCredential("xx@abcd.com","YYYYY","zzzzzz");service.Url=新的URI("https://mail.abcd.com/EWS/Exchange.asmx");的文件夹V=新的文件夹(5)ServicePointManager.ServerCertificateValidationCallback=RemoteCertificateValidationCallback;service.FindFolders(WellKnownFolderName.InboxV);//错误发生在这条线
Brij
评论会员:游客 时间:2011/12/27
对不起下旬答复。它似乎是错误的,您提供的凭据。请检查一下。干杯!!Brij访问我的博客:imgsrc={A}
viswanath_nath
评论会员:游客 时间:2011/12/27
喜Brij,我们正在开发一个Exchange服务器的管理应用程序。我们正在寻找电源外壳和作为选项的WebServices。我们决定使用我们的应用程序。我有关于这个问题的夫妇。,1。我们可以得到所有的信息交换服务器使用Web服务,我们从PowerShell。2。是否有任何可以只使用一个管理界面检索到的信息。预先感谢Viswanath
史蒂芬阿曼尼
评论会员:游客 时间:2011/12/27
喜为感谢您的帮助至今。我可以创建消息,附加文件和消息坐在很好地在我的草稿文件夹。然而,当我去送它使用p_itemid,它不能与下面的错误:发送或更新操作无法执行,因为在请求中传递的变革的关键不匹配的项目当前变化的关键感谢
!史蒂芬阿曼尼
评论会员:游客 时间:2011/12/27
该代码只失败,如果附件被添加到的消息,这使我相信ITEMID和更改键改变一旦附件添加。所有我需要做的是找到新的ID
。史蒂芬阿曼尼
评论会员:游客 时间:2011/12/27
我觉得我有这个解决。返回时,将附件添加附件ID实际上是发送对象时要使用新的MessageID。我只需要测试这多个附件
。Brij
评论会员:游客 时间:2011/12/27
!!imgsrc=http://www.orcode.com/upimg/2011_12_27_10_19_23_2.gif干杯Brij
史蒂芬阿曼尼
评论会员:游客 时间:2011/12/27
快捷提问:-有没有办法不指定实际的电子邮件地址发送一封电子邮件。例如,我想只是在收件人指定"李四"和理想,如Exchange,以解决这个john.doe@somecompany.com我将如何做的代码中去?一个伟大的教程
!Brij
评论会员:游客 时间:2011/12/27
我不认为这是可能的,你必须提供电子邮件id.Might可以采取用户输入的唯一的名字,搜索GAL从那里得到的电子邮件ID您可以使用电子邮件ID.Cheers!你有Brij
会员4101640
评论会员:游客 时间:2011/12/27
嗨,好文章。感谢你试图对MSExchangeOnline服务,这显然是在微软的云托管的早期预警系统接口。我认为它会工作,因为Exchange在线Exechange服务器后建立2007SP1的。但是,当我在VS2008中生成的服务的引用,它并不甚至ExchangeServiceBinding类。你知道如果SP1现在有不同的域模型吗?感谢
会员4101640
评论会员:游客 时间:2011/12/27
我想通了。我添加的WCF服务的引用,而不是旧的ASMXWeb服务的参考。欢呼
!Brij
评论会员:游客 时间:2011/12/27
!干杯imgsrc=http://www.orcode.com/upimg/2011_12_27_10_19_23_2.gifBrij|AyBeO:
您好,

我是能够SendMessage()的运行没有任何问题,不过,我现在想你的代码的其余部分,我不能得到CreateAttachment工作。

我得到以下错误

错误1名称'intAttachmentsCount"在目前情况下不存在
无法找到错误2类型或命名空间名称"MessageBDO"(是否缺少using指令或程序集引用?)

错误3名"p_signal"在目前情况下不存在

错误4名"intIndex"在目前情况下不存在
公共ItemIdType CreateAttachment(字符串名称,文件路径字符串,ItemIdType p_signalId)
{
& #160; ExchangeServiceBinding ESB =新ExchangeServiceBinding()
esb.Credentials =新的NetworkCredential("特工","0vSxnB2vITndpP5fCChr","firecomm");
esb.Url ="htt​​ps://hoexchange1/ews/exchange.asmx";

FileAttachmentType fileAttachment = NULL;

& #160; / /创建添加附件的要求。
& #160; CreateAttachmentType attachementRequest =新CreateAttachmentType()

attachementRequest.ParentItemId = p_signalId;
attachementRequest.Attachments =新AttachmentType [intAttachmentsCount]

 60; fileAttachment =新FileAttachmentType()
MessageBDO.AttachmentsDTRow drowAttachment =(MessageBDO.AttachmentsDTRow)p_signal.AttachmentsDT.Rows [intIndex]

fileAttachment.Name =
fileAttachment.ContentType ="text / plain的";
 60; fileAttachment.Content = System.IO.File.ReadAllBytes(文件路径);
&# 160;attachementRequest.Attachments [intIndex] = fileAttachment;

ItemIdType attachmentItemId =新ItemIdType()
CreateAttachmentResponseType响应=(CreateAttachmentResponseType)esb.CreateAttachment(attachementRequest); {BR  0; (response.ResponseMessages.Items [0]。ResponseClass == ResponseClassType.Success)
 60; {
&# 160; AttachmentIdType附件ID =((AttachmentInfoResponseMessageType)
  ;
response.ResponseMessages.Items [0])附件[0]附件ID。 attachmentItemId.ChangeKey = attachmentId.RootItemChangeKey.ToString()
attachmentItemId.Id = attachmentId.RootItemId.ToString()
& #160; }
返回attachmentItemId;
}
可以为您提供的源文件?
谢谢
评论会员:游客 时间:2011/12/27
Brij:其无法提供的源代码,但我可以解决您的问题AyBeO写道:错误1名称'intAttachmentsCount"在目前情况下不存在请iniatialize作为附件attchments你想指定的邮件数量这个变量。AyBeO写道:无法找到错误2类型或命名空间名称"MessageBDO"(是否缺少using指令或程序集引用?)在我的项目,我使用的数据集bussiness数据objects.ThemessageBDO属于。AyBeO写道:错误3名"p_signal"在目前情况下不存在p_signalIdItemIdType,其中包含的消息,在其中您要附加的文件(附件)ITEMIDAyBeO写道:错误4名"intIndex"在目前情况下不存在intIndex附件arraycounter。只是一些修改为您的需要,它会正常运行如果您遇到任何问题,请让我知道。干杯!!Brij
史蒂芬阿曼尼
评论会员:游客 时间:2011/12/27
你的国家时说:p_signalIdItemIdType,其中包含的消息,在其中您要附加的文件(附件)ITEMID我如何获得的消息ItemidType呢?我没有问题可以发送带有附件的电子邮件
。Brij
评论会员:游客 时间:2011/12/27
潘阿曼尼写道:我如何获得消息ItemidType?当您需要发送您需要创建的消息,使用createItem中的项目将建立在交流,你会得到,item.Nowitemid的,你可以添加附件到这个项目中使用itemidCheersattachment.First的!{BR}Brij
the_juh_ryan
评论会员:游客 时间:2011/12/27
我应该怎样从函数CreateMessage返回?将用于从函数CreateMessage返回的功能CreateAttachment和SendMessage,对不对?感谢
。siriris
评论会员:游客 时间:2011/12/27
您好,我新的C#编码。我的工作,远程获取信息的ExchangeServer2007邮箱的详细信息。我能够通过早期预警系统检索项目和邮箱文件夹。要获得详情如下:1)邮箱列表2)总邮箱的大小3)最后登录时间我需要执行的cmdlet。cmdlet可以成功地执行在ExchangeServer,但我要执行cmdltes远程,因为我从我的本地调用的早期预警系统的API。任何一个可以帮助我在做这个吗?我想通过C#代码中执行ExchangeServer2007中的cmdlet远程在此先感谢,Sireesha