在C#中如何在客户端接收信件
创建界面
类型
对象名
Text属性
Label
Label1
Label
Label2
用户名:
Label
Label3
密码
TextBox
TextBox1
TextBox
TextBox2
Button
Button1
接收
Button
Button2
退出
当发送的验证通过Label1的text属性就会显示成功的消息
当发送的验证没有通过Label1的text属性就会显示失败的消息
显示代码
1.在代码前端添加代码
using System.Threading;
using System.Net;
using System.Net.Sockets;
using System.IO;
2.添加字段代码
private TcpClient mailclient;
private NetworkStream ns;
private StreamReader sr;
private StreamWriter sw;
3.双击“接收”按钮
private void Button1_Click(object sender, System.EventArgs e)
{
login();
}
private int login()
{
string m_response;//从服务器返回的信息变量
int totmessages;//指明在你的邮箱中有几封
try
{
//连接服务器,其中第一参数代表服务器地址,第二参数代表pop3的端口数
mailclient=new TcpClient("pop.163.com",110);
}
catch(Exception e)
{
Label1.Text="error";//服务器连接失败
return 2;
}
ns=mailclient.GetStream();//返回服务器字节流
sr=new StreamReader(ns);
sw=new StreamWriter(ns);
m_response=sr.ReadLine();//读取服务器字节流字符
//发送用户名给服务器
sw.WriteLine("User "+TextBox1.Text);
sw.Flush();
//验证用户名是否正确
m_response=sr.ReadLine();
if(m_response.Substring(0,3)=="-ER")
{
Label1.Text="User error";//用户连接失败
return 2;
}
//发送密码给服务器
sw.WriteLine("Pass "+TextBox2.Text);
sw.Flush();
try
{
//验证密码是否正确
m_response=sr.ReadLine();
}
catch(Exception e)
{
Label1.Text="Password error";//密码连接失败
return 2;
}
if(m_response.Substring(0,4)=="-ERR")
{
Label1.Text="Password error";//密码错误
return 2;
}
sw.WriteLine("Stat");//执行pop3权限检查命令
sw.Flush();
m_response=sr.ReadLine();
string[] nummess=m_response.Split(' ');
totmessages=Convert.ToInt16(nummess[1]);//获取服务器中有几封信件
if(totmessages>0)
{
Label1.Text="you have "+totmessages+" messages";
}
else
{
Label1.Text="you have no messages";
}
return 1;
}
4.双击“退出”按钮
private void Button2_Click(object sender, System.EventArgs e)
{
if(ns!=null)
{
sw.Close();
sr.Close();
ns.Close();
mailclient.Close();
}
}
注意点:
Stat代表权限检查命令,如果要得到标题和发件人信息要用top执行命令,要得到文本信息要用retr执行命令,这些内容还需我总结一下,我在下个礼拜会详细介绍。
在星期四我写了一篇关于“在C#中如何发送信件”的文章写的不怎么样,因此今天我另外写了篇“在C#中如何接收信件”,在下个礼拜我会总结在C#中整个发送Email和接收Email的基本内容请大家光顾咯谢谢