开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2011.10.31
上一篇 / 下一篇 2010-01-05 15:50:39
本文简单介绍SMTP协议以及如何用C#编程实现EMAIL发送。
一、SMTP协议简介1、 客户端通过服务器的25端口建立TCP/IP连接服务器端: 220 server.com Simple Mail Transfer Service Ready2、 客户端使用“HELO”命令标识发件人客户端:HELO server.com服务器端:250 server.com3、 客户端发送MAIL命令,服务器端以OK作为响应表明准备接收客户端: MAIL FROM: 服务器端: 250 OK4、 客户端发送RCPT命令标识收件人,服务器端回应是否愿意为收件人接受邮件客户端:RCPT TO: 服务器端:250 OK5、 协商结束后用命令DATA发送发送邮件客户端:DATA服务器端:354 Start mail input: end with .6、 客户端以.表示结束输入内容一起发送出去 客户端:Subject: 内容7、客户端用QUIT命令退出。 客户端:QUIT服务器端:250 server.com closing transmission channel二、SMTP客户端程序代码:1、 用VS.NET新建一个C# WINDOWS应用程序项目,命名为SMTP。2、 在窗体上添加控件:一个按钮:设置属性name->btnsend;text->发送六个标签:分别提示服务器地址、发件人、收件人、主题、内容以及发送记录五个文本框:服务器地址txtsmtp、发件人txtfrom、收件人txtto、主题txtsub、内容txtmsg对应相应的标签放置。 一个列表框:lstlog3、在程序开头添加以下名字空间: using System.Data;using System.Net;using System.Net.Sockets;using System.IO;4、在 btnsend_Click 函数中添加代码 private void btnsend_Click(object sender, System.EventArgs e){ // 将鼠标形状改为漏斗状 Cursor cr = Cursor.Current; Cursor.Current = Cursors.WaitCursor; //定义变量 string Data; byte[] szData; string CRLF = "\r\n"; //创建与服务器25端口的连接 TcpClient SmtpServ = new TcpClient(txtsmtp.Text,25); lstlog.Items.Clear(); //显示服务器初始信息 NetworkStream NetStrm = SmtpServ.GetStream(); StreamReader RdStrm= new StreamReader(SmtpServ.GetStream()); lstlog.Items.Add(RdStrm.ReadLine()); //标志发件人 Data = "HELO server " + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); lstlog.Items.Add(RdStrm.ReadLine()); //标志发件人 Data = "MAIL FROM: " + "<" + txtfrom.Text + ">" + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); lstlog.Items.Add(RdStrm.ReadLine( // 标志收件人 Data = "RCPT TO: " + "<" + txtto.Text + ">" + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); lstlog.Items.Add(RdStrm.ReadLine()); //准备发送内容 Data = "DATA " + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); lstlog.Items.Add(RdStrm.ReadLine()); //发送主题 Data = "SUBJECT: " + txtsub.Text + CRLF ; //发送内容 Data = Data+ txtmsg.Text + CRLF ; //结束发送 Data = Data+ "." + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); lstlog.Items.Add(RdStrm.ReadLine()); //退出 Data = "QUIT " + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); lstlog.Items.Add(RdStrm.ReadLine()); //关闭连接 NetStrm.Close(); RdStrm.Close(); lstlog.Items.Add("连接关闭"); lstlog.Items.Add("发送成功"); //将鼠标恢复箭头状 Cursor.Current = cr; }
微信登录中...请勿关闭此页面