在域环境中连接echange服务器的代码
时间:2010-09-02 来源:开心无罪
string userName = "你的用户名";
string passWord ="你的密码";
string domain = "域名";
string url = "https://exchange服务器地址/EWS/Exchange.asmx";
ExchangeServiceBinding exchangeServer = new ExchangeServiceBinding();
ICredentials creds = new NetworkCredential(userName, passWord, domain);
// 建立信任连接
exchangeServer.Credentials = creds;
exchangeServer.Url = url;
// 定义邮件的收件箱
DistinguishedFolderIdType[] folderIDArray = new DistinguishedFolderIdType[1];
folderIDArray[0] = new DistinguishedFolderIdType();
folderIDArray[0].Id = DistinguishedFolderIdNameType.inbox;
PathToUnindexedFieldType ptuftDisplayName = new PathToUnindexedFieldType();
ptuftDisplayName.FieldURI = UnindexedFieldURIType.folderDisplayName;
PathToExtendedFieldType pteftComment = new PathToExtendedFieldType();
pteftComment.PropertyTag = "0x3004"; // PR_COMMENT
pteftComment.PropertyType = MapiPropertyTypeType.String;
// 定义GetFolderType对象,设置相应属性
GetFolderType myfoldertype = new GetFolderType();
myfoldertype.FolderIds = folderIDArray;
myfoldertype.FolderShape = new FolderResponseShapeType();
myfoldertype.FolderShape.BaseShape = DefaultShapeNamesType.IdOnly;
myfoldertype.FolderShape.AdditionalProperties = new BasePathToElementType[2];
myfoldertype.FolderShape.AdditionalProperties[0] = ptuftDisplayName;
myfoldertype.FolderShape.AdditionalProperties[1] = pteftComment;
// 获取服务器中的文件夹的集合
GetFolderResponseType myFolder = exchangeServer.GetFolder(myfoldertype);
// 获取收件箱
FolderInfoResponseMessageType firmtInbox = (FolderInfoResponseMessageType)myFolder.ResponseMessages.Items[0];
// 显示收件箱
//Console.WriteLine(string.Format("got folder: {0}", firmtInbox.Folders[0].DisplayName));
PathToUnindexedFieldType ptuftSubject = new PathToUnindexedFieldType();
ptuftSubject.FieldURI = UnindexedFieldURIType.itemSubject;
PathToUnindexedFieldType ptuftBody = new PathToUnindexedFieldType();
ptuftBody.FieldURI = UnindexedFieldURIType.itemAttachments;
PathToExtendedFieldType pteftFlagStatus = new PathToExtendedFieldType();
pteftFlagStatus.PropertyTag = "0x1090"; // PR_FLAG_STATUS
pteftFlagStatus.PropertyType = MapiPropertyTypeType.Integer;
// 定义FindItemType对象,准备获取收件箱中的集合
FindItemType findItemRequest = new FindItemType();
findItemRequest.Traversal = ItemQueryTraversalType.Shallow;
findItemRequest.ItemShape = new ItemResponseShapeType();
findItemRequest.ItemShape.BaseShape = DefaultShapeNamesType.AllProperties;
findItemRequest.ParentFolderIds = new FolderIdType[1];
findItemRequest.ParentFolderIds[0] = firmtInbox.Folders[0].FolderId;
// 获取邮件
FindItemResponseType firt = exchangeServer.FindItem(findItemRequest);
// 循环迭代每一封邮件
foreach (FindItemResponseMessageType firmtMessage in firt.ResponseMessages.Items)
{
//如果包含邮件www.qichepeijian.com,显示出来
if (firmtMessage.RootFolder.TotalItemsInView > 0)
{
// 循环迭代每一封邮件详细信息
foreach (ItemType it in ((ArrayOfRealItemsType)firmtMessage.RootFolder.Item).Items)
{
if (((MessageType)(it)).IsRead == false)
{
Console.WriteLine();
Console.WriteLine(string.Format("邮件标题: {0} ", it.Subject));
Console.WriteLine(string.Format("发件人: {0} ", ((MessageType)(it)).From.Item.Name));
Console.WriteLine(string.Format("收件人: {0} ", it.DisplayTo));
Console.WriteLine(string.Format("抄送: {0} ", it.DisplayCc));
Console.WriteLine(string.Format("大小: {0} ", it.Size.ToString()));
Console.WriteLine(string.Format("重要性: {0} ", it.Importance.ToString()));
Console.WriteLine(string.Format("是否已读: {0} ", ((MessageType)(it)).IsRead.ToString()));
Console.WriteLine(string.Format("是否有附件: {0} ", it.HasAttachments.ToString()));
Console.WriteLine(string.Format("发送时间:{0}", it.DateTimeSent.ToString()));
Console.WriteLine(string.Format("接收时间: {0} ", it.DateTimeReceived.ToString()));
Console.WriteLine();
}
}
}
}