EWS Managed API 介绍(上)

续上。。。

3. 发送邮件 

发送邮件的代码有详细的注释说明,如下:

EmailMessage message = new EmailMessage(service);
// 邮件主题

message.Subject = "Hello kevindiao!";
message.Body
=new
MessageBody();
// 指定发送邮件的格式,可以是Text和Html格式

message.Body.BodyType=BodyType.Text;
// 邮件内容

message.Body.Text = "Sent using the EWS Managed API.";
//
可以添加多个邮件人.也可以添加一个集合,用
// message.ToRecipients.AddRange(IList toEmailAddress_list)

message.ToRecipients.Add("[email protected]");
//
保存草稿
//
message.save();
//
只发送不保存邮件
//
message.Send();
// 发送并保存已发送邮件
 

// 添加附件
message.Attachmens.addFileAttachment(“@d:\test.txt”);

4.回复和转发邮件

 回复邮件代码如下:

代码
     
     
     
     
public void ReplyToMessage(EmailMessage replyToMessage, string replyMsg)
{
// 回复所有
// replyToMessage.Reply(replyMsg,true);
// 回复指定的账号
ResponseMessage responseMessage =
messageToReplyTo.CreateReply(
true );

responseMessage.BodyPrefix
= replyMsg;
// 选择需要回复的账号
responseMessage.CcRecipients.Add( " [email protected] " );
responseMessage.SendAndSaveCopy();
}

转发邮件和回复类型只要调用.Forward()或.CreateForward()方法。 

5. 删除一个任何类型的Item

删除一个Item,如邮件,代码如下:

    
    
    
    
// 软删除一个邮件信息
// 软删除指将邮件移动到已删除文件箱中,如果是在已删除文件夹中的item则直接删除,
// 回收资源。
message.Delete(DeleteMode.SoftDelete);

  删除Item和删除Folder类似。

 

6. 创建一个周期性的约会  

创建周期性约会和周期性会议是类似的,这里就举例约会,代码如下:

 

代码
     
     
     
     
// 实例化一个Appointment
Appointment appointment = new Appointment(service);
// 约会主题
appointment.Subject = " Play Basketball " ;
// 约会内容
appointment.Body = " Play Basketball " ;
// 约会开始时间2010-6-1 12:30:00
appointment.Start = new DateTime( 2010 , 5 , 29 , 12 , 30 , 0 );
// 约会结束
appointment.End = appointment.Start.AddHours( 4 );
// 约会的位置
appointment.location = " 体育馆 " ;
// 添加与会者
appointment.RequiredAttendees.Add(“[email protected]”)
// 从2010-6-1 12:30:00开始每周举行一次
appointment.Recurrence = new Recurrence.WeeklyPattern(
appointment.Start,
1 , /* 每一周一次 */
DayOfWeek.Saturday
);
// 可以设置发送通知的方式,如:
// Appointment.Save(SendInvitationsMode.SendOnlyToAll)
appointment.Save()

7.创建一个自定义文件夹

 

 

在指定的目录下创建文件夹,代码如下:

    
    
    
    
Folder folder = new Folder(service);
folder.DisplayName
= " New Folder " ;
// 在收件箱中创建自定义文件夹.
folder.Save(WellKnownFolderName.Inbox);

8. 获取收件箱中的内容

获取收件箱中所有的内容,代码如下:

代码
     
     
     
     
// 获取收件箱中所有内容
// 也可以指定每次获取的条数,如:10条New ItemView(10)
FindItemsResults < Item > findResults = service.FindItems(
WellKnownFolderName.Inbox,
new ItemView( int ,MaxValue));
foreach (Item item in findResults.Items)
{
// 对item做一些处理.
}

获取收件箱中的内容的方式和获取其他文件夹中的内容类似,只要指定

WellKnownFolderName的枚举类型。分页获取需要ItemView.Offset属性的支持。

9.获取一个文件夹下所有子文件夹

代码如下:

    
    
    
    
FindFoldersResults findResults = service.FindFolders(
WellKnownFolderName.Inbox,
new FolderView( int .MaxValue));
foreach (Folder folder in findResults.Folders)
{
// 对Folder的一些处理.
}

代码是获取收件箱中所有的子文件夹,要获取其他文件夹下的子文件夹类似。

 

 

10. 创建任务

创建或更新一个任务,代码如下:

 

代码
     
     
     
     
///
/// 创建重复任务
///

/// 任务主题
/// 任务内容
/// 开始时间
/// 结束时间
/// 任务开始状态
/// 是否开启提醒
/// 设置提醒时间
/// 设置任务类型
/// 任务的优先级
/// 任务重复类型
/// 设置任务的联系人
/// 是添加还是更新一个任务,true表示更新。
public void CreateTast( string subject, string body, DateTime startDate, DateTime endDate,
TaskStatus taskStatus,
bool isReminder, DateTime reminderDueBy, Sensitivity sensitivity,
Importance taskImportance,Recurrence recurrence,IList
< string > contact_list, bool isUpdate)
{
Task myTask
= new Task(MyExchangeService);
myTask.Subject
= subject;
myTask.Body
= body;
myTask.StartDate
= startDate;
myTask.DueDate
= endDate;
myTask.Status
= taskStatus;
myTask.IsReminderSet
= isReminder;
if (isReminder)
myTask.ReminderDueBy
= reminderDueBy;
myTask.Sensitivity
= sensitivity;
myTask.Importance
= taskImportance;
myTask.Recurrence
= recurrence;
myTask.Contacts.AddRange(contact_list);
if (isUpdate)
{
myTask.Update(ConflictResolutionMode.AlwaysOverwrite);
}
else
{
myTask.Save();
}
}

删除和获取一个任务和获取一条Item类型。获取一个时间段内的任务和获取一个时间段内的约会类型。在任务中也可以添加附件和在邮件中添加附件相同。

11. 分页获取item

代码如下:

代码
     
     
     
     
///
/// 分页获取指定文件夹中的内容
///

/// 需要获取内容的文件夹
/// 显示条数
/// 当前页
/// 总共多少条
///
public FindItemsResults < Item > GetItemsOfPager(WellKnownFolderName folderType,
int pageSize, int currentPage, out int totalItems)
{
ItemView itemView
= new ItemView(pageSize);
itemView.Offset
+= pageSize * currentPage;
FindItemsResults
< Item > findResults;
try
{
findResults
= MyExchangeService.FindItems(folderType,
itemView);
}
catch (Exception ex)
{
throw new Exception( " 异常 " + ex.Message);
}
totalItems
= findResults.TotalCount;
return findResults;
}

12.  创建一个条件搜索

可以指定多个文件箱和多个关键字来创建一个搜索,查看如下代码:

 

代码
     
     
     
     
///
/// 在搜索文件夹中创建一个自定义的搜索
///

/// 显示的名称
/// 检索目录
/// 检索条件
public void CreateSearchFolder( string displayName,WellKnownFolderName searchFolderName,
params SearchFilter[] filders)
{
SearchFolder searchFoler
= new SearchFolder(MyExchangeService);
searchFoler.DisplayName
= displayName;
// 添加查询的文件夹
searchFoler.SearchParameters.RootFolderIds.Add(searchFolderName);
// 添加查询条件
searchFoler.SearchParameters.SearchFilter = new SearchFilter.SearchFilterCollection(
LogicalOperator.Or,filders);
// 保存文件夹的位置
searchFoler.Save(WellKnownFolderName.SearchFolders);
}

可以根据上面的方法指定的条件来创建各种条件的搜索。

13.  其他功能

在ExchangeService中还有下面一些功能,文档中暂时没有详细的描述: 

1)         设置其他邮箱地址,查收其他邮箱的邮件 。

2)         一次请求创建多个类型的Item。

3)         获取可用性服务。

4)         用pull的方式获取提醒。

四。  备注

  1. EWS Managed API 下载地址:

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c3342fb3-fbcc-4127-becf-872c746840e1

  1. 参考网站

Exchange Web Services Managed API 1.0 入门

Exchange Development Forum

Exchange Web Service Namespace

 

完。。

 

 

message.SendAndSaveCopy();

发送有附件的代码如下: