Exchange2007自带的WebService问题

Ki1381 2009-05-04 03:51:33
需求很简单,用Exchange2007自带的WebService获取指定邮箱中所有收到邮件的标题、发信人Email地址、发送时间。现在折腾了半天就是取不到发信人的email地址,谁有这方面的经验请指点一二,谢谢!

我的代码:
private void Test()
{
ws.ExchangeServiceBinding exch = new GetExchangeMail.ws.ExchangeServiceBinding();
ICredentials creds = new NetworkCredential(用户名, 密码, 域名);

exch.Credentials = creds;
exch.Url = "https://Ex2007MailBoxSvr01/ews/exchange.asmx";

DistinguishedFolderIdType[] folderIDArray = new DistinguishedFolderIdType[1];
folderIDArray[0] = new DistinguishedFolderIdType();
folderIDArray[0].Id = DistinguishedFolderIdNameType.inbox;

PathToUnindexedFieldType ptuftDisplayName = new PathToUnindexedFieldType();
ptuftDisplayName.FieldURI = UnindexedFieldURIType.folderDisplayName;

GetFolderType myfoldertype = new GetFolderType();
myfoldertype.FolderIds = folderIDArray;
myfoldertype.FolderShape = new FolderResponseShapeType();
myfoldertype.FolderShape.BaseShape = DefaultShapeNamesType.IdOnly;
myfoldertype.FolderShape.AdditionalProperties = new BasePathToElementType[1];
myfoldertype.FolderShape.AdditionalProperties[0] = ptuftDisplayName;


// 获取服务器中的文件夹的集合
GetFolderResponseType myFolder = exch.GetFolder(myfoldertype);

// 获取收件箱
FolderInfoResponseMessageType firmtInbox = (FolderInfoResponseMessageType)myFolder.ResponseMessages.Items[0];

PathToUnindexedFieldType ptuftSubject = new PathToUnindexedFieldType();
ptuftSubject.FieldURI = UnindexedFieldURIType.itemSubject;

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 = exch.FindItem(findItemRequest);
// 循环迭代每一封邮件
foreach (FindItemResponseMessageType firmtMessage in firt.ResponseMessages.Items)
{
// 如果包含邮件,显示出来
if (firmtMessage.RootFolder.TotalItemsInView > 0)
{
// 循环迭代每一封邮件详细信息
foreach (ItemType it in ((ArrayOfRealItemsType)firmtMessage.RootFolder.Item).Items)
{
listTitle.Items.Add(string.Format("{0}, From {1} @ {2}", it.Subject, ((MessageType)(it)).From.Item.Name, it.DateTimeSent.AddHours(8).ToString()));

Application.DoEvents();
}


}
}
}
...全文
255 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
大神来了丶 2009-05-06
  • 打赏
  • 举报
回复
35032539 .NET(C#)技术交流
欢迎加入
caorenlong 2009-05-06
  • 打赏
  • 举报
回复
jlj84237485 2009-05-06
  • 打赏
  • 举报
回复
UP
冰凝瞬间1986 2009-05-06
  • 打赏
  • 举报
回复
友情客串
hangang7403 2009-05-06
  • 打赏
  • 举报
回复
up
bbb332 2009-05-06
  • 打赏
  • 举报
回复
up
Ki1381 2009-05-05
  • 打赏
  • 举报
回复
WebService是工作的,我可以取到标题、DisplayName和发送时间。找了几个貌似是email地址的属性不是空的就是编译不通过。MSDN上也没找到更详细的资料。2楼的((MessageType)(it)).From.Item.Name 是笔误,最后一个Name应该是EmailAddress。
sushou2009 2009-05-05
  • 打赏
  • 举报
回复
关注
coodd 2009-05-04
  • 打赏
  • 举报
回复
在浏览器里运行一下这个webservice看看能有结果不
阿牛138588 2009-05-04
  • 打赏
  • 举报
回复
不懂,路过
jietuan 2009-05-04
  • 打赏
  • 举报
回复
没有用过Exchange server,帮您顶!
Ki1381 2009-05-04
  • 打赏
  • 举报
回复
对这些对象模型不太熟啊。。。
//DisplayName应该是从这里来的
ptuftDisplayName.FieldURI = UnindexedFieldURIType.folderDisplayName;

// 倒是有长得很像email的属性,可惜是空的
((MessageType)(it)).From.Item.Name
chinese_zmm 2009-05-04
  • 打赏
  • 举报
回复
帮你顶

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧