bsp;
hm:read 如果邮件已阅读,则该标记被设置
m:to 收件人
m:from 发件人
m:subject 邮件主题
m:date 时间标记
D:getcontentlength 邮件的大小(字节数)
五、接收邮件
枚举出文件夹里面的MailItem之后,我们就可以利用MailItem的URL获得邮件本身,只需要向Hotmail服务器发送一个HTTP/1.1 GET请求就可以了。示例代码中的LoadMail()函数输入一个MailItem实例作为参数,返回邮件的内容:
/// <summary>
///
下载MailItem指定的邮件
/// </summary>
public string LoadMail(MailItem mailItem)
{
// 邮件的URL
string mailUrl = mailItem.Url;
// 打开Hotmail服务器连接
xmlHttp_.open("GET", mailUrl, false, null, null);
// 发送请求
xmlHttp_.send(null);
// 获取应答
string mailData = xmlHttp_.responseText;
// 返回邮件数据
return mailData;
}
六、发送邮件
LoadMail()方法通过发送HTTP/1.1 GET请求获取邮件,类似地,用Hotmail发件箱发送邮件时我们提交一个POST请求,如下面的SendMail()方法所示。
/// <summary>
/// 发送一个邮件
/// </summary>
public void SendMail(string from, string fromName,
string to, string subject, string body)
{
}
首先准备好后面要用到的引号字符以及邮件的时间标记:
// 引号字符
string quote = "\u0022";
// 时间标记
DateTime now = DateTime.Now;
string timeStamp = now.ToString("ddd, dd MMM yyyy hh:mm:ss");
HTTPMail协议采用与SMTP相似的通信模式。Outlook Express用MIME格式发送邮件,但为简单计,本例我们只发送纯文本的邮件:
// 构造POST请求的内容
string postBody = null;
// 邮件头.
postBody += "MAIL FROM:<" + from + ">\r\n";
postBody += "RCPT TO:<" + to + ">\r\n";
postBody += "\r\n";
postBody += "From: " + quote + fromName + quote + " <" + from + ">\r\n";
postBody += "To: <" + to + ">\r\n";
postBody += "Subject: " + subject +"\r\n";
postBody += "Date: " + timeStamp + " -0000\n";
postBody += "\r\n";
// 邮件正文
postBody += body;
发送邮件时,我们要把Content-Type请求头设置成message/rfc821,表示这个请求包含一个遵从RFC821的消息。最后要做的就是把邮件发送到服务器:
// 打开连接
xmlHttp_.open("POST", sendUrl_, false, null, null);
// 发送请求
xmlHttp_.setRequestHeader("Content-Type", "message/rfc821");
xmlHttp_.se