il.com/</hm:sentitems>
<hm:deleteditems>http://law15.oe.hotmail.com/</hm:deleteditems>
<hm:msgfolderroot>http://law15.oe.hotmail.com/</hm:msgfolderroot>
</D:prop>
</D:response>
</D:multistatus>
在本文的控制台示例
程序中,我们感兴趣的两个文件夹是收件箱和发件箱的文件夹,它们分别用于接收和发送邮件。
在C#环境中解析XML的方法很多,由于我们肯定代码涉及的所有XML文档总是合法的,所以可以利用System.XML.XmlTextReader速度快的优势。XmlTextReader是一个“只向前”的读取器,下面把XML字符数据转换成字符流,初始化XML读取器:
// 初始化
inboxUrl_ = null;
sendUrl_ = null;
// 装入XML
StringReader reader = new StringReader(folderList);
XmlTextReader xml = new XmlTextReader(reader);
遍历各个节点,选取出hm:inbox和hm:sendmsg节点,这两个节点分别代表收件箱和发件箱:
// 读取XML数据
while(xml.Read())
{
// 是一个XML元素?
if(xml.NodeType == XmlNodeType.Element)
{
// 获取该节点
string name = xml.Name;
// 该节点代表收件箱?
if(name == "hm:inbox")
{
// 保存收件箱URL
xml.Read();
inboxUrl_ = xml.Value;
}
// 该节点代表发件箱?
if(name == "hm:sendmsg")
{
// 保存发件箱URL
xml.Read();
sendUrl_ = xml.Value;
}
}
}
只有先获取当前这次会话的合法的收件箱和发件箱URL,才可以发送和接收邮件。
三、列举文件夹内容
得到了信箱文件夹(如收件箱)的URL之后,就可以向该文件夹的URL发送WebDAV请求列举其内容。示例
程序定义了一个托管类型MailItem,用来保存文件夹里一项内容(即一个邮件)的信息。文件夹内容列举从初始化一个MailItems数组开始:
// 初始化
ArrayList mailItems = new ArrayList();
为获得邮件主题、收件人地址、发件人地址之类的邮件基本信息,我们要用到下面XML格式的WebDAV
查询:
<?xml version="1.0"?>
<D:propfind xmlns:D="DAV:" xmlns:hm="urn:schemas:httpmail:" xmlns:m="
urn:schemas:mailheader:">
<D:prop>
<D:isfolder/>
&nbs