Exchange Server 2007整合与二次开发---代码篇(二)


续上篇 Exchange Server 2007整合与二次开发---代码篇(一)

创建联系人,这段代码来自SDK:

1publicstaticvoidCreateContact(ExchangeServiceBindingesb)
2{
3//Createanobjectofcreateitemtype.
4CreateItemTypecreateItemType=newCreateItemType();
5
6//Becauseyouarecreatingacontact,savetheitemintheContactsfolder.
7createItemType.SavedItemFolderId=newTargetFolderIdType();
8DistinguishedFolderIdTypecontactsFolder=newDistinguishedFolderIdType();
9contactsFolder.Id=DistinguishedFolderIdNameType.contacts;
10
11createItemType.SavedItemFolderId.Item=contactsFolder;
12
13createItemType.Items=newNonEmptyArrayOfAllItemsType();
14createItemType.Items.Items=newItemType[1];
15
16//Createacontactitemtype.
17ContactItemTypecontactItem=newContactItemType();
18
19//Settherelevantpropertiesonthecontact.
20contactItem.FileAs="FriendA";
21
22//Setthecontactnameandjobinformation.
23contactItem.GivenName="Don";
24contactItem.Surname="Hall";
25contactItem.CompanyName="AdventureWorks";
26contactItem.JobTitle="SoftwareEngineer";
27
28//Setasinglee-mailaddressforthecontact.
29contactItem.EmailAddresses=newEmailAddressDictionaryEntryType[1];
30EmailAddressDictionaryEntryTypeaddress=newEmailAddressDictionaryEntryType();
31address.Key=EmailAddressKeyType.EmailAddress1;
32address.Value="don@example.com";
33contactItem.EmailAddresses[0]=address;
34
35//Setasinglecontactphysicaladdress.
36contactItem.PhysicalAddresses=newPhysicalAddressDictionaryEntryType[1];
37PhysicalAddressDictionaryEntryTypephysicalAddress=newPhysicalAddressDictionaryEntryType();
38physicalAddress.Key=PhysicalAddressKeyType.Home;
39physicalAddress.Street="123456AveNE";
40physicalAddress.City="LaHabraHeights";
41physicalAddress.CountryOrRegion="UnitedStates";
42physicalAddress.PostalCode="98072";
43
44contactItem.PhysicalAddresses[0]=physicalAddress;
45
46//Setthecontacttelephonenumber.
47contactItem.PhoneNumbers=newPhoneNumberDictionaryEntryType[1];
48PhoneNumberDictionaryEntryTypephoneEntry=newPhoneNumberDictionaryEntryType();
49phoneEntry.Key=PhoneNumberKeyType.BusinessPhone;
50phoneEntry.Value="5625550100";
51
52contactItem.PhoneNumbers[0]=phoneEntry;
53
54createItemType.Items.Items[0]=contactItem;
55
56//Sendtherequesttocreatethecontactitem;receivetheresponse.
57CreateItemResponseTypecreateItemResponse=esb.CreateItem(createItemType);
58
59//Checktheresultsoftherequest.
60if(createItemResponse.ResponseMessages.Items.Length>0&&
61createItemResponse.ResponseMessages.Items[0].ResponseClass==ResponseClassType.Success)
62{
63ItemInfoResponseMessageTyperesponseMessage=createItemResponse.ResponseMessages.Items[0]asItemInfoResponseMessageType;
64ContactItemTypecontactResponse=responseMessage.Items.Items[0]asContactItemType;
65Console.WriteLine("CreatedContactItemwithId{0}andChangeKey{1}",contactResponse.ItemId.Id,contactResponse.ItemId.ChangeKey);
66}

67}

获得某账户的状态:

1publicstaticvoidGetUserAvailability(ExchangeServiceBindingesb)
2{
3//Identifythetimetocomparefree/busyinformation.
4Durationduration=newDuration();
5duration.StartTime=DateTime.Now;
6duration.EndTime=DateTime.Now.AddHours(4);
7
8//Identifytheoptionsforcomparingfree/busyinformation.
9FreeBusyViewOptionsTypefbViewOptions=newFreeBusyViewOptionsType();
10fbViewOptions.TimeWindow=duration;
11fbViewOptions.RequestedView=FreeBusyViewType.MergedOnly;
12fbViewOptions.RequestedViewSpecified=true;
13fbViewOptions.MergedFreeBusyIntervalInMinutes=35;
14fbViewOptions.MergedFreeBusyIntervalInMinutesSpecified=true;
15
16MailboxData[]mailboxes=newMailboxData[1];
17mailboxes[0]=newMailboxData();
18
19//Identifytheusermailboxtoreviewforfree/busydata.
20EmailAddressemailAddress=newEmailAddress();
21
22emailAddress.Address="邮件地址";
23emailAddress.Name=String.Empty;
24
25mailboxes[0].Email=emailAddress;
26mailboxes[0].ExcludeConflicts=false;
27
28//Maketherequest.
29GetUserAvailabilityRequestTyperequest=newGetUserAvailabilityRequestType();
30
31//Setthetimezoneoftherequest.
32request.TimeZone=newSerializableTimeZone();
33request.TimeZone.Bias=480;
34request.TimeZone.StandardTime=newSerializableTimeZoneTime();
35request.TimeZone.StandardTime.Bias=0;
36request.TimeZone.StandardTime.DayOfWeek=DayOfWeekType.Sunday.ToString();
37request.TimeZone.StandardTime.DayOrder=1;
38request.TimeZone.StandardTime.Month=11;
39request.TimeZone.StandardTime.Time="02:00:00";
40request.TimeZone.DaylightTime=newSerializableTimeZoneTime();
41request.TimeZone.DaylightTime.Bias=-60;
42request.TimeZone.DaylightTime.DayOfWeek=DayOfWeekType.Sunday.ToString();
43request.TimeZone.DaylightTime.DayOrder=2;
44request.TimeZone.DaylightTime.Month=3;
45request.TimeZone.DaylightTime.Time="02:00:00";
46
47//Addthemailboxestotherequest.
48request.MailboxDataArray=mailboxes;
49
50//Addtheviewoptionstotherequest.
51request.FreeBusyViewOptions=fbViewOptions;
52
53try
54{
55//Sendtherequestandgettheresponse.
56GetUserAvailabilityResponseTyperesponse=esb.GetUserAvailability(request);
57
58//Accessfree/busyinformation.
59if(response.FreeBusyResponseArray.Length<1)
60{
61thrownewException("Nofree/busyresponsedataavailable.");
62}

63else
64{
65foreach(FreeBusyResponseTypefbrtinresponse.FreeBusyResponseArray)
66{
67if(fbrt.ResponseMessage.ResponseClass==ResponseClassType.Error)
68{
69Console.WriteLine(string.Format("Error:{0}",fbrt.ResponseMessage.MessageText));
70}

71else
72{
73//Showthefree/busystream.
74FreeBusyViewfbv=fbrt.FreeBusyView;
75Console.WriteLine(string.Format("Mergedfree/busydata:{0}",fbv.MergedFreeBusy));
76}

77}

78}

79}

80catch(Exceptione)
81{
82//Performerrorprocessing.
83Console.WriteLine(e.Message);
84Console.ReadLine();
85}

86}

获取收件箱中邮件,有两种方式,GetItemType和FindItemType,通过FindItemType只能得到邮件的一部分属性,如标题、正文、发件人姓名等等,而像发件人地址、会议邀请邮件的会议地点、开始时间结束时间等只能通过GetItemType来获得,GetItemType能得到邮件的所有属性:

1读取会议邮件
2publicstaticvoidGetMeetingMailMessage(ExchangeServiceBindingexchangeServer)
3{
4DistinguishedFolderIdType[]folderIDArray=newDistinguishedFolderIdType[1];
5folderIDArray[0]=newDistinguishedFolderIdType();
6folderIDArray[0].Id=DistinguishedFolderIdNameType.inbox;
7
8PathToUnindexedFieldTypeptuftDisplayName=newPathToUnindexedFieldType();
9ptuftDisplayName.FieldURI=UnindexedFieldURIType.folderDisplayName;
10
11PathToExtendedFieldTypepteftComment=newPathToExtendedFieldType();
12pteftComment.PropertyTag="0x3004";//PR_COMMENT
13pteftComment.PropertyType=MapiPropertyTypeType.String;
14
15GetFolderTypemyfoldertype=newGetFolderType();
16myfoldertype.FolderIds=folderIDArray;
17myfoldertype.FolderShape=newFolderResponseShapeType();
18myfoldertype.FolderShape.BaseShape=DefaultShapeNamesType.IdOnly;
19myfoldertype.FolderShape.AdditionalProperties=newBasePathToElementType[2];
20myfoldertype.FolderShape.AdditionalProperties[0]=ptuftDisplayName;
21myfoldertype.FolderShape.AdditionalProperties[1]=pteftComment;
22
23GetFolderResponseTypemyFolder=exchangeServer.GetFolder(myfoldertype);
24
25
26FolderInfoResponseMessageTypefirmtInbox=
27(FolderInfoResponseMessageType)myFolder.ResponseMessages.Items[0];
28
29PathToUnindexedFieldTypeptuftSubject=newPathToUnindexedFieldType();
30ptuftSubject.FieldURI=UnindexedFieldURIType.itemSubject;
31
32PathToUnindexedFieldTypeptuftBody=newPathToUnindexedFieldType();
33ptuftBody.FieldURI=UnindexedFieldURIType.itemAttachments;
34
35PathToExtendedFieldTypepteftFlagStatus=newPathToExtendedFieldType();
36pteftFlagStatus.PropertyTag="0x1090";//PR_FLAG_STATUS
37pteftFlagStatus.PropertyType=MapiPropertyTypeType.Integer;
38
39
40FindItemTypefindItemRequest=newFindItemType();
41findItemRequest.Traversal=ItemQueryTraversalType.Shallow;
42findItemRequest.ItemShape=newItemResponseShapeType();
43findItemRequest.ItemShape.BaseShape=DefaultShapeNamesType.AllProperties;
44
45
46findItemRequest.ParentFolderIds=newFolderIdType[1];
47findItemRequest.ParentFolderIds[0]=firmtInbox.Folders[0].FolderId;
48
49//获取邮件
50FindItemResponseTypefirt=exchangeServer.FindItem(findItemRequest);
51
52//循环迭代每一封邮件
53
54foreach(FindItemResponseMessageTypefirmtMessageinfirt.ResponseMessages.Items)
55{
56//如果包含邮件,显示出来
57if(firmtMessage.RootFolder.TotalItemsInView>0)
58{
59//循环迭代每一封邮件详细信息
60foreach(ItemTypeitin((ArrayOfRealItemsType)firmtMessage.RootFolder.Item).Items)
61{
62//会议邀请邮件
63if(it.ItemClass=="IPM.Schedule.Meeting.Request")
64{
65//通过GetItemType对象来得到邮件的正文
66GetItemTypegetItemRequest=newGetItemType();
67//设置必要的属性
68getItemRequest.ItemIds=newBaseItemIdType[1];
69getItemRequest.ItemIds[0]=(BaseItemIdType)it.ItemId;
70getItemRequest.ItemShape=newItemResponseShapeType();
71getItemRequest.ItemShape.BaseShape=DefaultShapeNamesType.AllProperties;
72getItemRequest.ItemShape.IncludeMimeContent=true;
73
74//获得服务器的相应
75GetItemResponseTypegetItemResponse=exchangeServer.GetItem(getItemRequest);
76
77//得到邮件体
78ItemInfoResponseMessageTypegetItemResponseMessage=
79getItemResponse.ResponseMessages.Items[0]as
80ItemInfoResponseMessageType;
81
82Mail.ews.MeetingRequestMessageTypemeeting=getItemResponseMessage.Items.Items[0]asMail.ews.MeetingRequestMessageType;
83
84Console.WriteLine(meeting.Subject);
85Console.WriteLine(meeting.From.Item.EmailAddress);
86}

87}

88}

89}

90}

优质内容筛选与推荐>>
1、时间戳转日期
2、sql日期格式化
3、BBS用户登录
4、Codeforces Round #567 (Div. 2) E2 A Story of One Country (Hard)
5、Containers vs Serverless:你选择谁,何时选择?


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn