发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
上一篇 / 下一篇 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; }
来自: orion360doc > 《邮箱客户端》
0条评论
发表
请遵守用户 评论公约
用Visual C#实现POP3邮件接收程序
用Visual C#实现POP3邮件接收程序。本文通过运用C#来实现一个基于POP3协议的邮件接收程序来向大家展示C#网络编程的功能强大,同时也向大家介绍一下基于POP3协议的电子邮件接收原理。把邮件存储起来后要...
PTA 1014 福尔摩斯的约会 (20 分) C#
PTA 1014 福尔摩斯的约会 (20 分)
利用Tcp和socket实现的客户端与服务端的简单通信
利用Tcp和socket实现的客户端与服务端的简单通信。WriteLine("请输入服务器的地址:"); string ipadd = Console.ReadLine(); Console.WriteLine("请输入服务的端口号...
toCharArray()的用法和意思
toCharArray()的用法和意思。toCharArray()的用法:将字符串对象中的字符转换为一个字符数组例如:String myString="abcd";char myChar[]=myString.toCharArray();System.out.println("...
Arduino字符串转换为字符数组
在Windows下使用git时出现 warning: LF will be replaced by CRLF in xxx.
在Windows下使用git时出现 warning: LF will be replaced by CRLF in xxx.由于Linux中的换行符是LF,而Windows中的换行符是CRLF,如果想用Windows下的git管理来自Linux的文本文件,git会默认将LF转换成...
Git 警告 LF will be replaced by CRLF
Git 警告 LF will be replaced by CRLF 版权声明:本文为博主原创文章,转载请注明出处。warning: LF will be replaced by CRLF in .idea/vcs.xml.意思是在.idea/vcs.xml文件中...
notepad++显示所有字符(隐藏的回车换行空格)转换CRLF
notepad++显示所有字符的方法(针对隐藏的回车换行空格)notepad++ 显示全字符,即显示换行符号CRLF (注:这是在windows下),空格显示的...
ASK Mobile
ASK MobileJDK1.7重新设计了String类,各个String对象各自维护一个属于自身的char数组,下面是该类中的toCharArray方法的实现源码:public char[] toCharArray() { // Cannot use Arrays.copyOf becaus...
微信扫码,在手机上查看选中内容