163邮箱登录
最近邮箱项目需要取163邮箱收件箱信件内容, 在网上找了半天没找到满意的, 由于刚入收C#, 好多库不怎么了解, 网上也搜不到, 于是自己造了一个"轮子"(美其名曰: 开发")
好了, 不多废话, 回归正题.
登录
public bool LoginEmail()
{
string oldUrl = "https://reg.163.com/logins.jsp?username=" + username + "&password=" + password + "&url=http://fm163.163.com/coremail/fcg/ntesdoor2";
try
{
HttpWebRequest request = WebRequest.Create(oldUrl) as HttpWebRequest;
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
request.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3086.0 Safari/537.36";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
cookieContainer.Add(CookieUpdate(response.GetResponseHeader("Set-Cookie")));
StreamReader reader = new StreamReader(response.GetResponseStream());
string html = reader.ReadToEnd();
reader.Close();
string content = @"var url = """;
int startIndex = html.IndexOf(content);
int endIndex = html.IndexOf(@"""", startIndex + content.Length);
string newUrl = html.Substring(startIndex + content.Length, endIndex - startIndex - content.Length);
request = WebRequest.Create(newUrl) as HttpWebRequest; // 跳转
request.Referer = oldUrl;
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
request.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3086.0 Safari/537.36";
oldUrl = newUrl;
request.CookieContainer = cookieContainer;
response = request.GetResponse() as HttpWebResponse;
string testText = response.GetResponseHeader("Set-Cookie");
cookieContainer.Add(CookieUpdate(response.GetResponseHeader("Set-Cookie")));
reader = new StreamReader(response.GetResponseStream());
html = reader.ReadToEnd();
reader.Close();
loginReferer = response.ResponseUri.OriginalString;
int index = loginReferer.IndexOf("=") + 1;
int nCount = loginReferer.LastIndexOf("&") - index;
sid = loginReferer.Substring(index, nCount);
return true;
}
catch (Exception ex)
{
throw ex;
}
}
获取收件箱列表
public void getEmailList()
{
try
{
HttpWebRequest request = WebRequest.Create("http://mail.163.com/js6/s?sid=" + sid + "&func=mbox:listMessages&TopTabReaderShow=1&TopTabLofterShow=1&welcome_welcomemodule_mailrecom_click=1&LeftNavfolder1Click=1&mbox_folder_enter=1") as HttpWebRequest;
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
request.Referer = loginReferer;
request.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3086.0 Safari/537.36";
request.CookieContainer = cookieContainer;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
StreamReader reader = new StreamReader(response.GetResponseStream());
string emailIdText = reader.ReadToEnd();
reader.Close();
if (!emailIdText.Contains("<?xml version="))
{
throw new IOException("邮箱登录失败!");
}
string parren = @"<string name=""id"">(.*?)</string>[\S\s]*?<string name=""from"">""(.*?)""";
Regex regex = new Regex(parren);
if (!regex.IsMatch(emailIdText))
{
throw new IOException("邮箱登录失败!");
}
MatchCollection matchCollection = regex.Matches(emailIdText);
foreach (Match match in matchCollection)
{
GroupCollection groupCollection = match.Groups;
if (groupCollection.Count < 3)
continue;
emailIdList.Add(new KeyValuePair<string, string>(groupCollection[2].ToString(), groupCollection[1].ToString()));
}
//GetEmailBody();
}
catch (Exception ex)
{
throw ex;
}
}
本人正则不过关, 如有大神看见, 请略过......
获取指定发件人信件内容
public string GetEmailBody(string name)
{
try
{
string emailId = getEmailKeyId(name);
if (string.IsNullOrEmpty(emailId))
return null;
string url = "http://mail.163.com/js6/read/readhtml.jsp?mid=" + emailId + "&userType=newuser&font=15&color=064977";
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.CookieContainer = cookieContainer;
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36";
request.Referer = loginReferer;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
StreamReader reader = new StreamReader(response.GetResponseStream());
string html = reader.ReadToEnd();
reader.Close();
return html;
}
catch (Exception ex)
{
throw ex;
}
}
声明
本文只写了简略的代码, 更多代码请到(https://download.csdn.net/download/weixin_40411915/10742095)下载查看.

浙公网安备 33010602011771号