ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:230.25KB ,
资源ID:12716156      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12716156.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于POP3与SMTP协议的邮件收发程序的开发.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于POP3与SMTP协议的邮件收发程序的开发.docx

1、基于POP3与SMTP协议的邮件收发程序的开发一、设计思想电子邮件指用电子手段传送信件、单据、资料等信息的通信方法。电子邮件综合了电话通信和邮政信件的特点,它传送信息的速度和电话一样快,又能象信件一样使收信者在接收端收到文字记录。电子邮件系统又称基于计算机的邮件报文系统。它承担从邮件进入系统到邮件到达目的地为止的全部处理过程。电子邮件不仅可利用电话网络,而且可利用任何通信网传送。在利用电话网络时,还可利用其非高峰期间传送信息,这对于商业邮件具有特殊价值。由中央计算机和小型计算机控制的面向有限用户的电子系统可以看作是一种计算机会议系统。电子邮件的工作过程遵循客户-服务器模式。每份电子邮件的发送都

2、要涉及到发送方与接收方,发送方式构成客户端,而接收方构成服务器,服务器含有众多用户的电子信箱。发送方通过邮件客户程序,将编辑好的电子邮件向邮局服务器(SMTP服务器)发送。邮局服务器识别接收者的地址,并向管理该地址的邮件服务器(POP3服务器)发送消息。一个邮件系统的传输包含用户代理User Agent传输代理TransferAgent及接受代理DeliveryAgent三大部分。用户代理是一个用户发信和收信的程序,负责将电子邮件按照一定的标准包装,然后送至邮件服务器,或由邮件服务器收回。传输代理负责信件的交换和传输。将信件传送至适当的邮件主机,再由接受代理将信件分发至不同的邮件信箱。传输代理

3、必须要能够接受用户邮件程序送来的信件,解读收信人的地址,根据SMTP协议将它正确无误地传递到目的地。现在一般的传输代理已采用Sendmail程序完成工作。电子邮件到达邮件主机后,在经接收代理POP协议被用户读取至自己的主机。电子邮件在发送与接收过程中都要遵循SMTP、POP3等协议,这些协议确保了电子邮件在各种不同系统之间的传输。其中,SMTP负责电子邮件的发送,而POP3则用于接收Internet上的电子邮件。SMTP(SimpleMailTransferProtocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCPIP协

4、议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,我们就可以把Email寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转你发出的电子邮件。POP3(PostOfficeProtocol3)即邮局协议,目前已发展到第三版,称POP3。它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收

5、邮件服务器,用来接收电子邮件的。总的来说POP3协议是让用户把服务器上的信收到本地来所需要的一种协议。本程序为一个基于SMTP和POP3协议的小型EMAIL收发程序,简单的实现了邮件的收发功能。二、算法流程图图1 算法流程图三、源代码下面给出的是用登录程序的源代码:using System; /导入名字空间using System.Collections.Generic; /包含定义各种对象集合的接口和类using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using Syste

6、m.Text; /包含表示 ASCII等字符编码的类using System.Windows.Forms;using System.Net;using System.Net.Sockets;using System.IO;namespace MailSendOfRecive /命名空间public partial class Form3 : Form /定义类public string Conn,Uname,Pwd,Inf; /定义用户名、密码public TcpClient Server; /定义服务器public NetworkStream NetStrm;public StreamRea

7、der RdStrm;public Boolean BPass; /定义BPasspublic string Data;public byte szData;public string CRLF = rn; /定义快捷键public Form2 Sender;public Form3() /定义框架InitializeComponent(); /初始化private void Login_Click(object sender, EventArgs e)Conn = pop.+textBox1.Text.Trim();Uname = textBox2.Text.Trim(); /用户名Pwd

8、= textBox3.Text; /密码Server = new TcpClient(Conn, 110); /服务器tryNetStrm = Server.GetStream();RdStrm = new StreamReader(Server.GetStream(), System.Text.Encoding.Default);RdStrm.ReadLine();Data = USER + Uname + CRLF;szData = System.Text.Encoding.ASCII.GetBytes(Data);/获取ASCII值NetStrm.Write(szData,0,szDat

9、a.Length);RdStrm.ReadLine(); /读取字符并返回Data = PASS + Pwd + CRLF;szData = System.Text.Encoding.ASCII.GetBytes(Data);NetStrm.Write(szData,0,szData.Length);Inf = RdStrm.ReadLine();if (Inf.IndexOf(+OK)-1)BPass = true; /布尔值设为真Sender = new Form2(Uname, Pwd, textBox1.Text);this.Hide();Sender.Show();else if (

10、Inf.IndexOf(-OK)-1) /判断索引MessageBox.Show(密码或者用户名错误, 用户验证); /文本框显示信息Data = QUIT;szData = System.Text.Encoding.ASCII.GetBytes(Data);NetStrm.Write(szData, 0, szData.Length); /写入数据catch (System.Exception ex)MessageBox.Show(ex.Message); /文本框显示信息private void Form3_Load(object sender, EventArgs e)/定义Form3_

11、Load下面是发送邮件程序源代码using System; /导入名字空间using System.Collections.Generic; /包含定义各种对象集合的接口和类using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text; /包含表示 ASCII等字符编码的类using System.Windows.Forms;using System.Net;using System.Net.Sockets;using System.IO;using

12、System.Collections;using System.Data.OleDb;namespace MailSendOfRecive /命名空间public partial class Form1 : Form /定义类TcpClient smtpSrv;NetworkStream netStm; /提供数据流string CRLF = rn;public List SMail = new List();public Form2 fa;public string Ua, Pw, Sv;public Form1(Form2 f,string UN,string Pd,string SR)

13、/创建Form1fa = f;Ua = UN;Pw = Pd;Sv = SR;InitializeComponent(); /初始化public void WriteStream(string strCmd)strCmd += CRLF; /crlf表示结束byte bw = System.Text.Encoding.Default.GetBytes(strCmd); /将字符串转为字节数组netStm.Write(bw,0,bw.Length); /写入网络private string AuthStream(string strCmd) /连接服务器输出字符串trybyte by = Sys

14、tem.Text.Encoding.Default.GetBytes(strCmd);strCmd = Convert.ToBase64String(by); /转换成base64编码catch (System.Exception ex)return ex.ToString();return strCmd;public bool tryTran( ref string a) /定义布尔变量string b = ;b = a;trybyte outputb = Convert.FromBase64String(a); /转换数据类型a = Encoding.Default.GetString(o

15、utputb);return true;catch (System.Exception ex) /显示错误a= b;return false;public void WritInf(string s) /定义WritInftryTran(ref s);listBoxMsg.Items.Add(s);private void ButtonSend_Click(object sender, EventArgs e) /定义ButtonSend_ClicklistBoxMsg.Items.Clear(); /存放smtp服务器返回的信息trystring data;progressBar1.Visi

16、ble = true;progressBar1.Value = 1;smtpSrv = new TcpClient(smtp.+Sv,25);/TextBoxSer.Text,25); /连接smtp服务器netStm = smtpSrv.GetStream(); /取得Networkstream对象,来发送接收数据StreamReader rdStrm = new StreamReader(smtpSrv.GetStream(); /产生StreamReader来读取数据流WriteStream(EHLO Local); /发送命令建立连接progressBar1.Value+;listBo

17、xMsg.Items.Add(输入用户名开始);WriteStream(AUTH LOGIN); /发送命令请求验证listBoxMsg.Items.Add(rdStrm.ReadLine();progressBar1.Value+;data = AuthStream(Ua);/data); /转换编码格式WriteStream(data); /发送用户名listBoxMsg.Items.Add(rdStrm.ReadLine();data = AuthStream(Pw);/data); /转换编码格式WriteStream(data); /发送listBoxMsg.Items.Add(rd

18、Strm.ReadLine(); progressBar1.Value+;data = MAIL FROM:; /发件人地址WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine();progressBar1.Value+;data = RCPT TO:; /收件人地址WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine();progressBar1.Value+;WriteStream(DATA); /数据listBoxMsg.Items.Add(rdStrm.ReadLine();

19、progressBar1.Value+;data = Date:+System.DateTime.Now; /日期WriteStream(data);progressBar1.Value+;data = From: + TextBoxSend.Text; /发送者WriteStream(data);progressBar1.Value+;data = To: + TextBoxRev.Text; /接收者WriteStream(data);progressBar1.Value+;data = SUBJECT: + textBoxSubject.Text; /主题WriteStream(data

20、);progressBar1.Value+;data = Reply-To: + TextBoxSend.Text; /发送回复地址WriteStream(data);progressBar1.Value+;WriteStream(); /表示首部结束,开始正文progressBar1.Value+;WriteStream(textBoxMailText.Text);progressBar1.Value+;WriteStream(.); /点表示邮件内容结束progressBar1.Value+;listBoxMsg.Items.Add(rdStrm.ReadLine();WriteStrea

21、m(QUIT); /断开progressBar1.Value+;listBoxMsg.Items.Add(rdStrm.ReadLine(); /添加项netStm.Close();rdStrm.Close(); /释放资源MailInfo i = new MailInfo();i.sender = TextBoxSend.Text;i.geter = TextBoxRev.Text;i.Ttile = textBoxSubject.Text;i.NeiRong = textBoxMailText.Text;i.Datatime = DateTime.Now.ToString();/将发送的消

22、息送到SMail便于传个收件箱界面SMail.Add(i);MessageBox.Show(邮件发送成功, 成功); /显示信息catch (System.Exception ex)MessageBox.Show(ex.ToString(), 操作错误); /显示信息private void Form1_FormClosed(object sender, FormClosedEventArgs e)Application.Exit(); /终止所有程序private void button1_Click(object sender, EventArgs e)this.Hide(); /隐藏控件

23、fa.Show();fa.GetSenMail(SMail);private void Form1_Load(object sender, EventArgs e)下面是接收邮件程序源代码using System; /导入名字空间using System.Collections.Generic; /包含定义各种对象集合的接口和类using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using

24、 System.Net; /包含表示 ASCII等字符编码的类using System.Net.Mail;using System.Net.Sockets;using System.IO;using System.Collections;namespace MailSendOfRecive /命名空间public partial class Form2 : Form /定义类public TcpClient Server; /定义服务器public NetworkStream NetStrm;public StreamReader RdStrm;public string Data,UsNam

25、e,Pawd,InEmai;public byte szData,other;public List EMail = new List(); /链表类public List DMail = new List();public List SndMail = new List();public string CRLF = rn;public FileStream fs;public int InfoID,BackId;public int DeleTxt = -1; /声明写入流DataTable dt = new DataTable(); /数据表了,类似于数据库,可以存放数据public Fo

26、rm2(string Uname,string Pwd,string IEM)InfoID = -1;InEmai = IEM;/pop.+IEM;UsName = Uname;Pawd = Pwd;InitializeComponent(); /初始化Inint(); /为网格添加标题dt.Columns.Add(ID, typeof(int);dt.Columns.Add(主题, typeof(string);dt.Columns.Add(发件人, typeof(string); /创建对象dt.Columns.Add(时间, typeof(string);dt.Columns.Add(含

27、有附件, typeof(Boolean); private void Inint() /初始化节点 TreeNode Node = treeView1.Nodes.Add(Name, 邮件归档系统);Node.Nodes.Add(Send, 发件箱);Node.Nodes.Add(Recove, 收件箱);Node.Nodes.Add(GuiDang, 邮件归档); /获取对象的集合Node.Nodes.Add(HuiShou, 回收站);private void ShowInfo()private void buttonCon_Click(object sender, EventArgs e

28、) /定义点击事件Server = new TcpClient(pop.+InEmai, 110); /初始化服务器tryNetStrm = Server.GetStream();RdStrm = new StreamReader(NetStrm,System.Text.Encoding.Default);listBoxStatus.Items.Add(RdStrm.ReadLine(); /向列表添加项Data = USER + UsName + CRLF;/textBoxUser.Text+CRLF;szData = System.Text.Encoding.Default.GetByte

29、s(Data); /获取编码NetStrm.Write(szData,0,szData.Length);listBoxStatus.Items.Add(RdStrm.ReadLine();Data = PASS + Pawd + CRLF;/textBoxPwd.Text+CRLF;szData = System.Text.Encoding.Default.GetBytes(Data); /获取编码NetStrm.Write(szData,0,szData.Length);listBoxStatus.Items.Add(RdStrm.ReadLine(); /获取所有的邮件的大小Data = STAT + CRLF;szData = System.Text.Encoding.Default.GetBytes(Data); /获取编码NetStrm.Write(szData,0,szData.Length); /写入数据string st = RdStrm.ReadLine();MessageBox.Show(st); /显示消息框listBoxSt

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2