这要找邮箱之类的服务器控件了吧就跟AJAX在线聊天差不多吧,期待有高手编写出来
解决方案 »
- 寻求网站流量代码.
- !!!!!!!!!!!!!!大家帮我看看这句话那里错了!!!!!!!!!!!!!!
- 想用 asp.net2.0 做一个学校用的成绩输入系统,但新手上路,想参考一下相关的源代码,主要是在页面能实现连续输入分数
- 发现奇怪问题,如果你在aspx页面中使用了Table控件,然后在此网页的开始写上 <link rel="stylesheet" href="xxx.css" type="text/css">,
- 在选择多项记录时有没有像ListBox那样鼠标一点然后以拖拉就全部选中的控件!
- ■上传文件,并保存到服务器上。出现错误“System.IO.IOException: 磁盘空间不足”■
- <a>超链接实现下载,普通文件只是打开,特殊后缀的文件无法下载,怎么能让所有的文件都是呈下载,不用打开
- 执行exe文件
- 一个关于DropDownList的问题(急)
- 一个项目中两个Profile该如何解决
- 会用wschar的高手请进
- 如何获得登陆控件LoginName控件的值?
你想写个程序,然后在程序中输入email和密码,点击,显示该邮箱内未读的邮件数?这个样子?
我也没有办法取得没读的邮件,不懂楼主找到方法了吗?找到的话和我说下!谢谢!
收到邮件后,将这个标识保存到本地, 下次收邮件时, 先取邮件标识,
判断本地没有该邮件后再收取即可.
http://www.cnblogs.com/huazai/archive/2008/09/22/1296188.html
using System.Net.Sockets;
using System.Net.Security;
using System.IO;
using System.Text.RegularExpressions;
using System.Security.Cryptography.X509Certificates; 申明对象:
public TcpClient tc;
public NetworkStream ns;
public StreamReader sr;
public SslStream ss;
public static int count;
public int port=110;
public string server; //与服务器建立连接
public TcpClient GetClient()
{
try
{
string user = Txtuser.Text;
server = "pop." + user.Substring(user.IndexOf('@') + 1);
if (user.IndexOf("@gpres") != -1 || user.IndexOf("@gmail") != -1)
{
port = 995;
server = "pop.gmail.com"; }
else
{
port = 110;
}
tc = new TcpClient(server, port);
return tc;
}
catch(Exception ex)
{
return null;
}
} //断开与服务器的连接(110端口)
private void Disconnect110()
{
//"quit" 即表示断开连接
string input = "quit" + "\r\n";
Byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes, 0, outbytes.Length);
//关闭数据流
ns.Close();
} //断开与服务器的连接(995端口)
private void Disconnect995()
{
//"quit" 即表示断开连接
string input = "quit" + "\r\n";
Byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ss.Write(outbytes, 0, outbytes.Length);
//关闭数据流
ns.Close();
} //关闭连接
private void Disconnect()
{
if(port==110)
{
this.Disconnect110();
}
else
{
this.Disconnect995();
}
} //110端口登陆
public bool Login110()
{
try
{
string user = Txtuser.Text;//用户名
string pwd = Txtpwd.Text;//密码
TcpClient tcp = this.GetClient();
ns = tcp.GetStream();//获得连接对象
sr = new StreamReader(ns);
sr.ReadLine();
Byte[] outbytes;
string input;
string readuser = string.Empty;
string readpwd = string.Empty;
string readsize = string.Empty;
input = "user " + user + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes, 0, outbytes.Length);
readuser = sr.ReadLine();
input = "pass " + pwd + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes, 0, outbytes.Length);
readpwd = sr.ReadLine();
//登陆
if (readpwd.IndexOf("-ERR") != -1)
{
return false;
}
else
{
return true;
}
}
catch(Exception ex)
{
return false;
}
}
//995端口登陆(ssl验证)
public bool Login995()
{
string user = Txtuser.Text;//用户名
string pwd = Txtpwd.Text;//密码 TcpClient tcp = this.GetClient();
RemoteCertificateValidationCallback callback = new RemoteCertificateValidationCallback(OnCertificateValidation);
tcp.ReceiveBufferSize = 1024;
tcp.SendBufferSize = 1024;
ss = new SslStream(tcp.GetStream(), false, callback);
ss.AuthenticateAsClient(server);
if (ss.IsAuthenticated == true)
{
sr = new StreamReader(ss);
sr.ReadLine();
Byte[] outbytes;
string input;
string readuser = string.Empty;
string readpwd = string.Empty;
input = "user " + user + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ss.Write(outbytes, 0, outbytes.Length);
readuser = sr.ReadLine();
input = "pass " + pwd + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ss.Write(outbytes, 0, outbytes.Length);
readpwd = sr.ReadLine();
//登陆
if (readpwd.IndexOf("-ERR") != -1)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
} //登陆服务器
public bool GetLogin()
{
if (port ==110)
{
return this.Login110();
}
else
{
return this.Login995();
}
} //获得邮件的数目(110端口)
public int GetMialCount110()
{
Byte[] outbytes;
string input;
int MialCount=0;
input = "stat" + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes, 0, outbytes.Length);
string readsize = sr.ReadLine(); if (readsize.Substring(0, 4) != "-ERR")
{
string[] Array = readsize.Split(' ');
MialCount = int.Parse(Array[1]); }
else
{
MialCount=0;
} return MialCount;
} //获得邮件的数目(995端口)
public int GetMialCount995()
{
Byte[] outbytes;
string input;
int MialCount = 0;
input = "stat" + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ss.Write(outbytes, 0, outbytes.Length);
string readsize = sr.ReadLine(); if (readsize.Substring(0, 4) != "-ERR")
{
string[] Array = readsize.Split(' ');
MialCount = int.Parse(Array[1]); }
else
{
MialCount = 0;
} return MialCount;
} public int GetMialCount()
{
int count;
if(port==110)
{
count= this.GetMialCount110();
}
else
{
count = this.GetMialCount995();
} return count;
}
登陆调用的方法:
protected void BtnSubmit_Click(object sender, EventArgs e)
{
if (this.GetClient() != null)
{
if(this.GetLogin()==true)
{
int count = this.GetMialCount();
Response.Write("您有:"+count +"封未读邮件");
/* if (count > 0)
{ this.GetNewMail();
}
else
{
Response.Write("收件箱有:0个邮件");
}*/
// Response.Write("登陆成功!");
}
else
{
Response.Write("用户名或者密码错误");
}
}
else
{
Response.Write("连接失败");
} }
private static bool OnCertificateValidation(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
{
return true;
}
return false;
} //断开与服务器的连接(110端口)
private void Disconnect110()
{
//"quit" 即表示断开连接
string input = "quit" + "\r\n";
Byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes, 0, outbytes.Length);
//关闭数据流
ns.Close();
} //断开与服务器的连接(995端口)
private void Disconnect995()
{
//"quit" 即表示断开连接
string input = "quit" + "\r\n";
Byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ss.Write(outbytes, 0, outbytes.Length);
//关闭数据流
ns.Close();
}
但是抓取我有一个搞不掂的难题就是怎么样才不会重复抓取全部,也就是说怎么设置在上次抓取的时间之后去抓取