.NET中使用Exchange 2007 Webservice来读取邮件

Ews(ExchangeWebService)Api使用说明 打个小广告:作者博客地址:http://nbsanke.top:68 本文未完善,持续更新中 Java EwsApi地址: GitHub链接 Ews 官方说明文档 接口说明地址:https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.exchange.webservices.data?view=exchange-ews-api c#版Api教程及... 阅读详情

感谢:http://blog.youkuaiyun.com/thy822/archive/2010/09/09/5873244.aspx

 

很久没有更新过博客了,这几个月比较忙,人也比较懒散,今天已经是八月份,新的一个月希望要换一个状态。今天要写的文章是我四月份写的一个功能,一直拖到现在才发表。在企业内部我们一般都是使用微软的Exchange服务器来进行邮件的存储及发送,我们一般在客户端用outlook来收发邮件。工作中遇到了一个需求,需要写一个程序来抓取邮件服务器的邮件,并将抓取下来的邮件存储到数据库中。之前已经发表过一篇文章,是利用Jmail组件来抓取,可以抓取我们常用的一些邮箱的邮件,比如说163,gmail等,但是不能抓取exchange服务器中的邮件,所以需要重新写,最后决定使用Exchange 2007 中提供的webservice来抓取邮件。网络上这方面的资料很少,所以大部分的参考是来自MSDN:

http://msdn.microsoft.com/en-us/library/exchangewebservices(EXCHG.80).aspx

2007版的Exchange服务器提供了webservice,我们可以方便的在.NET程序中添加该引用,然后就可以方便的实现邮件的抓取,发送,删除等功能。我测试是在控制台程序中使用该webservice,步骤如下:

1 新建一个站点,然后添加 exchange webservice 的引用, 输入邮件服务器的 OWA 地址:http://yourmailserver/EWS/Services.wsdl ,如果是在公司的内部域中,添加的过程中要求输入你的域帐号和密码。

 

 

 

2 添加成功以后再项目中导入该命名空间以其他必须的命名空间 ;

 

3 下面就是具体的代码,具体的请看注释:

发送邮件:

 

 1          public   static   void  CreateEmail( string  userName,  string  passWord,  string  domain,  string  url,  string  mailFrom,  string  mailTo)
 2         
{
 3              //
 Create service binding.
 4              //  建立service绑定

 5             ExchangeServiceBinding esb  =   new  ExchangeServiceBinding();
 6             esb.Credentials  =   new
 NetworkCredential(userName, passWord, domain);
 7             esb.Url  =
 url;
 8

 9              //  Create the CreateItem request.

10             CreateItemType createItemRequest  =   new  CreateItemType();
11

12              //
 Specifiy how the created items are handled
13              //  如何处理邮件

14             createItemRequest.MessageDisposition  =  MessageDispositionType.SendAndSaveCopy;
15             createItemRequest.MessageDispositionSpecified  =   true
;
16

17              //  Specify the location of sent items. 

18             createItemRequest.SavedItemFolderId  =   new  TargetFolderIdType();
19             DistinguishedFolderIdType sentitems  =   new
 DistinguishedFolderIdType();
20             sentitems.Id  =
 DistinguishedFolderIdNameType.sentitems;
21             createItemRequest.SavedItemFolderId.Item  =
 sentitems;
22

23              //  Create the array of items.

24             createItemRequest.Items  =   new  NonEmptyArrayOfAllItemsType();
25

26              //
 Create a single e-mail message.
27              //  新建一封邮件message对象

28             MessageType message  =   new  MessageType();
29             message.Subject  =   " Tommy Test "
;
30             message.Body  =   new
 BodyType();
31             message.Body.BodyType1  =
 BodyTypeType.Text;
32             message.Body.Value  =   " This is tommy's test use exchange webservice "
;
33             message.ItemClass  =   " IPM.Note "
;
34             message.Sender  =   new
 SingleRecipientType();
35             message.Sender.Item  =   new
 EmailAddressType();
36             message.Sender.Item.EmailAddress  =
 mailFrom;
37             message.ToRecipients  =   new  EmailAddressType[ 1
];
38             message.ToRecipients[ 0 ]  =   new
 EmailAddressType();
39             message.ToRecipients[ 0 ].EmailAddress  =
 mailTo;
40             message.Sensitivity  =
 SensitivityChoicesType.Normal;
41

42              //  Add the message to the array of items to be created.

43             createItemRequest.Items.Items  =   new  ItemType[ 1 ];
44             createItemRequest.Items.Items[ 0 ]  =
 message;
45

46              try

47              {
48                  //  Send the request to create and send the e-mail item, and get the response.

49                 CreateItemResponseType createItemResponse  =  esb.CreateItem(createItemRequest);
50

51                  //  Determine whether the request was a success.

52                  if  (createItemResponse.ResponseMessages.Items[ 0 ].ResponseClass  ==  ResponseClassType.Error)
53                 
{
54                      throw   new  Exception(createItemResponse.ResponseMessages.Items[ 0
].MessageText);
55                 }

56                  else
57                  {
58                     Console.WriteLine( " Item was created "
);
59
                    Console.ReadLine();
60                 }

61             }

62              catch  (Exception e)
63             
{
64
                Console.WriteLine(e.Message);
65
                Console.ReadLine();
66             }

67         }

 

抓取以及删除邮件:

  1   public   static   void  GetMailMessage( string  userName,  string  passWord,  string  domain,  string  url)
  2         
{
  3              //  绑定exchange服务器

  4             ExchangeServiceBinding exchangeServer  =   new  ExchangeServiceBinding();
  5             ICredentials creds  =   new
 NetworkCredential(userName, passWord, domain);
  6

  7              //  建立信任连接

  8             exchangeServer.Credentials  =  creds;
  9             exchangeServer.Url  =
 url;
 10

 11              //  定义邮件的收件箱

 12             DistinguishedFolderIdType[] folderIDArray  =   new  DistinguishedFolderIdType[ 1 ];
 13             folderIDArray[ 0 ]  =   new
 DistinguishedFolderIdType();
 14             folderIDArray[ 0 ].Id  =
 DistinguishedFolderIdNameType.inbox;
 15

 16             PathToUnindexedFieldType ptuftDisplayName  =   new
 PathToUnindexedFieldType();
 17             ptuftDisplayName.FieldURI  =
 UnindexedFieldURIType.folderDisplayName;
 18

 19             PathToExtendedFieldType pteftComment  =   new
 PathToExtendedFieldType();
 20             pteftComment.PropertyTag  =   " 0x3004 " ;  //  PR_COMMENT

 21             pteftComment.PropertyType  =  MapiPropertyTypeType.String;
 22

 23              //  定义GetFolderType对象,设置相应属性

 24             GetFolderType myfoldertype  =   new  GetFolderType();
 25             myfoldertype.FolderIds  =
 folderIDArray;
 26             myfoldertype.FolderShape  =   new
 FolderResponseShapeType();
 27             myfoldertype.FolderShape.BaseShape  =
 DefaultShapeNamesType.IdOnly;
 28             myfoldertype.FolderShape.AdditionalProperties  =   new  BasePathToElementType[ 2
];
 29             myfoldertype.FolderShape.AdditionalProperties[ 0 ]  =
 ptuftDisplayName;
 30             myfoldertype.FolderShape.AdditionalProperties[ 1 ]  =
 pteftComment;
 31

 32              //  获取服务器中的文件夹的集合

 33             GetFolderResponseType myFolder  =  exchangeServer.GetFolder(myfoldertype);
 34

 35              //  获取收件箱

 36             FolderInfoResponseMessageType firmtInbox  =
 37                 (FolderInfoResponseMessageType)myFolder.ResponseMessages.Items[ 0 ];
 38

 39              //  显示收件箱

 40             Console.WriteLine( string .Format( " got folder: {0} " , firmtInbox.Folders[ 0 ].DisplayName));
 41

 42

 43             PathToUnindexedFieldType ptuftSubject  =   new
 PathToUnindexedFieldType();
 44             ptuftSubject.FieldURI  =
 UnindexedFieldURIType.itemSubject;
 45

 46             PathToUnindexedFieldType ptuftBody  =   new
 PathToUnindexedFieldType();
 47             ptuftBody.FieldURI  =
 UnindexedFieldURIType.itemAttachments;
 48

 49             PathToExtendedFieldType pteftFlagStatus  =   new
 PathToExtendedFieldType();
 50             pteftFlagStatus.PropertyTag  =   " 0x1090 " ;  //  PR_FLAG_STATUS

 51             pteftFlagStatus.PropertyType  =  MapiPropertyTypeType.Integer;
 52

 53              //  定义FindItemType对象,准备获取收件箱中的集合

 54             FindItemType findItemRequest  =   new  FindItemType();
 55             findItemRequest.Traversal  =
 ItemQueryTraversalType.Shallow;
 56             findItemRequest.ItemShape  =   new
 ItemResponseShapeType();
 57             findItemRequest.ItemShape.BaseShape  =
 DefaultShapeNamesType.AllProperties;
 58

 59

 60             findItemRequest.ParentFolderIds  =   new  FolderIdType[ 1
];
 61             findItemRequest.ParentFolderIds[ 0 ]  =  firmtInbox.Folders[ 0
].FolderId;
 62

 63              //  获取邮件

 64             FindItemResponseType firt  =  exchangeServer.FindItem(findItemRequest);
 65

 66              //  循环迭代每一封邮件

 67              foreach  (FindItemResponseMessageType firmtMessage  in  firt.ResponseMessages.Items)
 68             
{
 69                  //  如果包含邮件,显示出来

 70                  if  (firmtMessage.RootFolder.TotalItemsInView  >   0 )
 71                 
{
 72                      //  循环迭代每一封邮件详细信息

 73                      foreach  (ItemType it  in  ((ArrayOfRealItemsType)firmtMessage.RootFolder.Item).Items)
 74                     
{
 75                         Console.WriteLine( string .Format( " 邮件标题: {0}  "
, it.Subject));
 76                         Console.WriteLine( string .Format( " 发件人: {0}  "
,((MessageType)(it)).From.Item.Name));
 77                         Console.WriteLine( string .Format( " 收件人: {0}  "
, it.DisplayTo));
 78                         Console.WriteLine( string .Format( " 抄送: {0}  "
, it.DisplayCc));
 79                         Console.WriteLine( string .Format( " 大小: {0}  "
, it.Size.ToString()));
 80                         Console.WriteLine( string .Format( " 重要性: {0}  "
, it.Importance.ToString()));
 81                         Console.WriteLine( string .Format( " 是否已读: {0}  "
, ((MessageType)(it)).IsRead.ToString()));
 82                         Console.WriteLine( string .Format( " 是否有附件: {0}  "
, it.HasAttachments.ToString()));
 83                          // Console.WriteLine(string.Format("发送时间:{0}", it.DateTimeSent.ToString()));

 84                         Console.WriteLine( string .Format( " 接收时间: {0}  " , it.DateTimeReceived.ToString()));
 85
                        
 86
                        
 87                          //  通过GetItemType对象来得到邮件的正文

 88                         GetItemType getItemRequest  =   new  GetItemType();
 89                          //  设置必要的属性

 90                         getItemRequest.ItemIds  =   new  BaseItemIdType[ 1 ];
 91                         getItemRequest.ItemIds[ 0 ]  =
 (BaseItemIdType)it.ItemId;
 92                         getItemRequest.ItemShape  =   new
 ItemResponseShapeType();
 93                         getItemRequest.ItemShape.BaseShape  =
 DefaultShapeNamesType.AllProperties;
 94                         getItemRequest.ItemShape.IncludeMimeContent  =   true
;
 95

 96                          //  获得服务器的相应

 97                         GetItemResponseType getItemResponse  =  exchangeServer.GetItem(getItemRequest);
 98

 99                          //  得到邮件体

100                         ItemInfoResponseMessageType getItemResponseMessage  =
101                                               getItemResponse.ResponseMessages.Items[ 0 ]  as
102                                               ItemInfoResponseMessageType;
103

104                          //  显示邮件正文

105                         Console.WriteLine( " 邮件格式:{0} " , getItemResponseMessage.Items.Items[ 0 ].Body.BodyType1);
106                         Console.WriteLine( string .Format( " 正文:{0} " , getItemResponseMessage.Items.Items[ 0
].Body.Value));
107

108                          //  获取当前邮件的附件集合

109                          if  (getItemResponseMessage.Items.Items[ 0 ].HasAttachments)
110                         
{
111                             AttachmentType[] attachments  =  getItemResponseMessage.Items.Items[ 0
].Attachments;
112

113                              //  循环获取当前邮件的每一个附件

114                              for  ( int  i  =   0 ; i  <=  attachments.Length  -   1 ;i ++  )
115                             
{
116                                  //  定义GetAttachmentType,设置相应的属性,进行模式验证来获取附件

117                                 GetAttachmentType getAttachment  =   new  GetAttachmentType();
118                                 RequestAttachmentIdType[] attachmentIDArry  =   new  RequestAttachmentIdType[ 1
];
119                                 attachmentIDArry[ 0 ]  =   new
 RequestAttachmentIdType();
120                                 attachmentIDArry[ 0 ].Id  =
 attachments[i].AttachmentId.Id;
121                                 getAttachment.AttachmentIds  =
 attachmentIDArry;
122                                 getAttachment.AttachmentShape  =   new
 AttachmentResponseShapeType();
123
                                
124                                  //  获取附件

125                                 GetAttachmentResponseType getAttachmentResponse  =  exchangeServer.GetAttachment(getAttachment);
126

127                                  //  返回服务器的响应对象

128                                 AttachmentInfoResponseMessageType responseMessage  =  getAttachmentResponse.ResponseMessages.Items[ 0 ]  as  AttachmentInfoResponseMessageType;
129                                  if  (responseMessage  !=   null
)
130                                 
{
131                                      //  没有异常,显示附件信息

132                                      if  (responseMessage.ResponseClass  ==  ResponseClassType.Success  &&  responseMessage.Attachments  !=   null
133                                                             &&  responseMessage.Attachments.Length  >   0 )
134                                     
{
135                                         AttachmentType attachment  =  responseMessage.Attachments[ 0
];
136                                         Console.WriteLine( " 附件名:{0}/n "
, attachment.Name);
137                                          // Console.WriteLine("附件类型:{0}/n", attachment.ContentId);                                                    

138                                     }

139                                 }

140                             }

141                         }

142
143                          //  删除当前邮件

144                         DeleteItemType deleteItem  =   new  DeleteItemType();
145                         deleteItem.ItemIds  =   new  BaseItemIdType[ 1
];
146

147                          //  将要删除邮件的ID,changekey赋值给ItemIdType对象

148                         ItemIdType itemIDType  =   new  ItemIdType();
149                         itemIDType.Id  =
 it.ItemId.Id;
150                         itemIDType.ChangeKey  =
 it.ItemId.ChangeKey;
151

152                         deleteItem.ItemIds[ 0 ]  =
 itemIDType;
153

154                          //  执行删除

155                         DeleteItemResponseType deleteResponse  =  exchangeServer.DeleteItem(deleteItem);
156

157                          //  删除成功

158                          if  (deleteResponse.ResponseMessages.Items.Length  >   0   &&  deleteResponse.ResponseMessages.Items[ 0 ].ResponseClass  ==  ResponseClassType.Success)
159                         
{
160                             Console.WriteLine( " 删除成功 "
);
161                         }

162                         
163                     }

164                 }

165
166             }

167         }
exchange web service exchange web service java push email用于访问exchange邮件服务器与Java做交互 立即下载

相关推荐

从零部署奥比中光Gemini335L:Python SDK编译与手眼标定环境实战

本文提供了一份从零部署奥比中光Gemini 335L深度相机的完整实战指南。详细介绍了驱动安装、Python SDK编译、CMake配置及虚拟环境搭建等关键步骤,并重点解析了如何通过编译生成Python模块,最终实现深度图与点云数据获取,为后续的机械臂手眼标定工作奠定坚实基础。

weixin_29031161的博客 398

红蓝对抗实战宝典:RedTeam_BlueTeam_HW项目带你掌握攻防核心技能

在网络安全领域,**红蓝对抗**已成为检验企业安全防护能力的黄金标准。RedTeam_BlueTeam_HW项目为安全从业者提供了从入门到精通的完整学习路径,集成了丰富的**内存shellcode**和**内存马查杀工具**,帮助你在护网行动中游刃有余。 ## 🔍 核心价值定位:为什么选择这个项目? RedTeam_BlueTeam_HW不仅仅是一个工具集合,更是一个完整的**红蓝对抗实战平

gitblog_00013的博客 793

08-SD卡-TF卡硬件电路设计

SD卡-TF卡硬件电路设计

weixin_66510961的博客 8257

如何使用EWS获取邮件及其附件

ExchangeServiceBinding esb = new ExchangeServiceBinding(); esb.Credentials = new NetworkCredential(username, password, domain); esb.Url = url; Se...

weixin_34206899的博客 1290

Zynq 双核AMP 通信

4、配置离线编译(这里不讲),配置linux的内核地址空间(0x4000_0000改为0x2000_0000),以及单核启动。CPU1设置为0x2000_0000~0x3FFF_FFFF(也可以小于0x3FFF_FFFF)如果禁用CPU1的L2 cache,在CPU1的bsp里面添加编译时候所需要的宏。3、配置工程,将vivado产生的.xsa文件复制到amp_com项目目录下。9、使用petalinux-package --boot 打包。一、vivado工程。5、编译u-boot。

y183128184的博客 1086

专题一:Labview表格控件 及 应用(三)在表格中插入一行数据

专题一:Labview表格控件 及 应用(三) 在表格中插入一行数据 最近一段时间,做试验台上位机编程,老是用到表格控件,这几天抽时间专门写一个表格控件的专题。有用到的朋友可以参考一下。 今天接着讲一下,表格控件的数据插入,和相关的操作 1.表格控件的数据插入原理: 表格控件是一个 2D 字符串数组。 在表格插入一行,就是在2D数组插入一行。 行、列插入类似** 以下以成绩录入为例说明 2.1 不要表头直接插入 知识点1:创建数组:把数学,语文,英语三个数值,连成一个一位数组(数值型)。 知

Labview十年工控_702老师的博客 1万+

net读取exchange数据

大部分的参考是来自MSDN: http://msdn.microsoft.com/en-us/library/exchangewebservices(EXCHG.80).aspx 2007版的Exchange服务器提供了webservice,我们可以方便的在.NET程序中添加该引用,然后就可以方便的实现邮件的抓取,发送,删除等功能。我测试是在控制台程序中使用该webservice,步骤如下...

weixin_30868855的博客 174

ESP32 WiFi自平衡小车硬件与PID控制实战

自平衡小车是典型的嵌入式实时反馈控制系统,其核心依赖姿态感知(如MPU6050)、电机驱动(如L298N)与闭环控制算法(如PID)的协同。系统通过IMU采集俯仰角,经互补滤波融合处理,再由PID控制器实时计算PWM输出,驱动直流电机产生恢复力矩;WiFi模块(ESP32内置)则提供远程遥控接口,实现AP模式下的Web指令交互。该架构兼具硬实时性(毫秒级采样与响应)与软实时性(HTTP服务),广泛应用于机器人教学、智能小车开发及边缘控制原型验证。本文围绕ESP32平台,详解传感器接口、驱动电路设计、PID抗

weixin_42509513的博客 391

利用webdav从exchange读取数据

使用WebDAV读取Exchange服务器中的数据 在MOSS开发中,我们往往会集成Exchange服务器中的邮件等数据,采用WebPart或其他方式。Exchange 2007中提供了一套简易的Web Service。Exchange 2003中却没有。考虑到目前很多企业使用的都是Exchange 2003,下面我给出一套实用WebDAV读取Exchange的通用方法。

RainyLin-SunnyLin的专栏 1890

03.Linux下目录动态扩容,以分配home的部分空间给root为例

本篇文章将介绍Linux下分配home目录的部分空间给root目录。大致思路:卸载home,解除其磁盘容量占用->扩容root,增加其磁盘空间->重建恢复home操作演示环境为CentOS系统,其他操作系统例如openEuler也可作为参考。01.Linux下目录扩容,以增加root目录的磁盘容量分配为例操作系统版本如下名称版本CentOS7.6+

ChennyWJS的博客 2336

Hermes Agent 安装部署完全指南

Hermes Agent安装部署指南提供了两种安装方式:一键脚本安装和手动分步安装。该AI助手支持多平台运行(Linux/macOS/WSL2),核心功能仅需Git作为前置依赖,其他依赖如Python、Node.js等均由安装脚本自动处理。文档详细介绍了系统要求、依赖管理、配置目录结构、环境变量设置以及10个手动安装步骤,并提供了功能模块化选项,用户可根据需求选择安装语音交互、浏览器自动化等扩展功能。安装完成后可通过hermes doctor命令验证环境,并通过交互式向导完成初始化配置。

简简单单Onlinezuozuo 2617

C盘清理终极指南:从休眠文件到Docker,一次释放几十GB

磁盘空间管理是Windows系统维护的核心技能,而C盘空间不足往往源于休眠文件、虚拟内存、系统更新残留等隐藏大户。这些文件虽不显眼,却随着使用不断膨胀,导致传统磁盘清理收效甚微。理解各类系统文件的生成机制与清理原理,是安全释放空间的前提。对于办公用户,合理调整休眠与虚拟内存、重定向用户目录即可换取数十GB;而开发者还需关注WSL虚拟磁盘、Docker镜像及包管理器缓存的定期清理。通过命令行工具与计划任务,可将清理流程自动化,实现长效维护。本文从系统级瘦身到开发者场景,提供一套完整的C盘清理与预防方案,帮助读

weixin_34198762的博客 419

【DRAM存储器四】DRAM存储器的架构演进-part1

详述以提升吞吐量为目标的DRAM架构变化

highman110的博客 1246

使用WebDAV读取Exchange服务器中的数据

在MOSS开发中,我们往往会集成Exchange服务器中的邮件等数据,采用WebPart或其他方式。 Exchange 2007中提供了一套简易的Web Service。Exchange 2003中却没有。 考虑到目前很多企业使用的都是Exchange 2003,下面我给出一套实用WebDAV读取Exchange的通用方法。 为了让更多的人使用,示例代码使用普通的asp.net版本。请需要做...

weixin_30498807的博客 113

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Exchange Information Store服务无法启动并返回错误代码为0的错误

症状:一台Exchange 2000 Server的邮件服务器进行灾难恢复安装(KB297289),此服务器同时安装了Norton AntiVirus Client 8.6和Norton AntiVirus for Exchange 2.5,当使用DisasterRecovery模式安装了Exchange 2000 SP3补丁后,发现服务中的Exchange Information Store服务

Aceryt 2735

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Exchange2007专题(四) 综合案例

   案例:     假设公司研发部门有N1001和N1002两个会议室,研发部门所以员工都在一个组中,公司使用Exchange2007对工作流进行管理,研发部门员工可以通过Outlook预约会议室,并对会议室进行排期,将排期结果在部门内部公示。    思路:     将两个会议室的日历共享,建一个公共账户可以访问到两个共享的日历,通过EWS 登录读取该公共账户日历信息,讲信息数据传递给终端...

weixin_30376163的博客 150

[译] Exchange Web Services Managed API 1.0 入门

Exchange Web Services Managed API 1.0 大概是在微软在09年10月左右发布的目前国内的资料非常少,国外倒是还有一些比较好的资料。这是一篇入门级的文章,只希望能给园子里的朋友一个简要的介绍,具体的更详细的大家可以在MSDN里面找。 Exchange在2007之后提供了Exchange Web Service(EWS),它提供了一个访问Exchang...

weixin_33985679的博客 366

Exchange Web Service(EWS) 协议同步邮件

Exchange Web Service(EWS) 协议EWS是微软实现的一种客户端和服务器之间的交换信息的协议。Exchange Server提供了包括从电子邮件、会议安排、团体日程管理、任务管理、文档管理、实时会议和工作流等丰富的协作应用。 EWS是基于标准的web service, 使用HTTP+XML+SOAP来传输消息的。一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:

ingegoing的博客 1万+

设计模式_接口回调

    在java组件编程时(如Android编程)时会十分频繁的使用到接口回调,以前我都没有发现,只是照着书上写的做。最常见的就是View.setonClickListener(new View.onClickListener())这样的语句了。因为最近看得代码也渐渐多起来了,所以很自然的就发现这个问题了,然后还好现在Android中的sdk源码都是可以直接查看的,现在我明白了。    感觉接...

wly7746的博客 354

一段时间编程的小积累...

http://blog.csdn.net/Luckeryin/archive/2008/12/16/3532415.aspx(.net pet shop4介绍包含相关链接)http://blog.csdn.net/onlyzhangqin/archive/2008/12/16/3530791.aspx(sql server2005 sp3)http://www.javaworld.com/java

anders lu 的专栏 2690
上一篇: vs2005先新建个解决方案,在添加类库项目,怎么总是类库不再解决方案下面
下一篇: 当前上下文中不存在名称“ConfigurationManager
爱德华马
博客等级 码龄19年 22粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值