服务器基于POP3与SMTP协议的邮件收发程序的开发

smtp  时间:2021-02-20  阅读:()

编号_______________

本资料为word版本可以直接编辑和打印感谢您的下载

基于POP3与SMTP协议的邮件收发程序的开发甲 方___________________

乙 方___________________

日 期___________________

说明本合同资料适用于约定双方经过谈判、协商而共同承认、共同遵守的责任与

义务 同时阐述确定的时间内达成约定的承诺结果。文档可直接下载或修改使用

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

电子邮件的工作过程遵循客户 -服务器模式。每份电子邮件的发送都要涉及到发送方与接收方发送方式构成客户端 而接收方构成服务器服务器含有众多用户的电子信箱。发送方通过邮件客户程序将编辑好的电子邮件向邮局服务器 SMTP服务器发送。邮局服务器识别接收者的地址并向管理该地址的邮件服务器 POP3服务器发送消息。

一个邮件系统的传输包含用户代理 Us er Age nt传输代理TransferAgent及接受代理Del iveryAge nt三大部分。

用户代理是一个用户发信和收信的程序 负责将电子邮件按照一定的标准包装 然后送至邮件服务器或由邮件服务器收回。传输代理负责信件的交换和传输。将信件传送至适当的邮件主机再由接受代理将信件分发至不同的邮件信箱。传输代理必须要能够接受用户邮件程序送来的信件解读收信人的地址根据SMT呦议将它正确无误地传递到目的地。现在一般的传输代理已采用 Sendmai l程序完成工作。电子邮件到达邮件主机后  在经接收代理PO呦议被用户读取至自己的主机。

电子邮件在发送与接收过程中都要遵循 SMTP POP玲协议这些协议确保了电子邮件在各种不同系统之间的传输。 其中 SMT颤责电子邮件的发送而POP刎用于接收Internet上的电子邮件。

SMTPSimple Mai l Transfer Protocol即简单邮件传输协议它是一组用于由源地址到目的地址传送邮件的规则  由它来控制信件的中转方式。 SMTFW议属于TCFy IP协议族它帮助每台计算机在发送或中转信件时找到下一个目的地。 通过SMT呦议所指定的服务器我们就可以把E-mai l寄到收信人的服务器上了整个过程只要几分钟。 SMTFW务器则是遵循SMT呦议的发送邮件服务器用来发送或中转你发出的电子邮件。

POP3 Post Office Protocol 3即邮局协议 目前已发展到第三版称 POP3它规定怎样将个人计算机连接到 Internet的邮件服务器和下载电子邮件的电子协议。它是因特

网电子邮件的第一个离线协议标准  POP3允许用户从服务器上把邮件存储到本地主机 即自己的计算机上 同时删除保存在邮件服务器上的邮件而 POP所艮务器则是遵循POP型、议的接收邮件服务器用来接收电子邮件的。总的来说 POP3协议是让用户把服务器上的信收到本地来所需要的一种协议。

本程序为一个基于SMT所日POP3协议的小型EMAIL收发程序简单的实现了邮件的收发功能。

二、算法流程图

等字符编码的类下面给出的是用登录程序的源代码:using System; 〃导入名字空间using System.Col lections.Generic; 〃包含定义各种对象集合的接口和类using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net;using System.Net.Sockets;using System. IO;

namespace Mai lSendOfRecive //命名空间

(public partial class Form3:Form //定义类

(public string Conn,Uname,Pwd, Inf; //定义用户名、密码public TcpClient Server; //定义服务器public NetworkStream NetStrm;public StreamReader RdStrm;public Boolean BPass;public string Data;public byte[]szData;public string CRLF=public Form2 Sender;public Form3()

(

InitializeComponent();

}private void Login_Click(object sender,EventArgs e)

(

Conn="pop."+textBox1.Text.Trim();

Uname=textBox2.Text.Tri m(); 〃用户名

Pwd=textB ox3.Text; 〃密码

Server=new TcpClient(Conn, 1 10); //服务器try

(

NetStrm=Server.GetStream();

RdStrm=new StreamReader(Server.GetStream(),System.Text.Encoding.Default);RdStrm.Read Line();

Data="USER"+Uname+CRLF;szData=System.Text.Encodi ng.ASCI I .GetBytes(Data);//获取ASCI I值

NetStrm.Write(szData,0,szData.Length);

RdStrm.Read Line(); 〃读取字符并返回

Data="PASS"+Pwd+CRLF;szData=System.Text.Encodi ng.ASCI I .GetBytes(Data);

NetStrm.Write(szData,0,szData.Length);

I nf=RdStrm.Read Line();if (Inf. IndexOf("+OK")>-1)

(

BPass=true; 〃布尔值设为真

Sender=new Form2(Uname,Pwd, textBox1.Text);this.Hide();

Sender.Show();

}else if (Inf. IndexOf("-OK")>-1) 〃判断索引

MessageBox.Show"密码或者用户名错误”,”用户验证" ;

〃文本框显示信息

)

Data="QUIT";szData=System.Text.Encodi ng.ASCI I .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_Load

(

)

)

)

下面是发送邮件程序源代码using System;using System.Col lections.Generic;using System.ComponentModel; 〃导入名字空间using System.Data; //包含定义各种对象集合的接口和类using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;

using System.Net.Sockets;using System. IO;using System.Col lections;using System.Data.OleDb;namespace Mai lSendOfRecive

(public partial class Forml :Form

( //命名空间

TcpClient smtpSrv;

//定义类public List<Mai l Info>SMai l=new List<Mai l Info>();public Form2 fa;public string Ua

public Form1(Form2 f,string UN,string Pd,string SR) //创建//F〃定/o/显定r义m示义Wl错布r误尔itIn变f量(fa=f;

Ua=UN;

Pw=Pd;

Sv=SR;

InitializeComponent();

}public void WriteStream(string strCmd)

(strCmd+=CRLF;byte[]bw=System.Text.Encoding.Default.GetBytes(strCmd); //crlf表示结束netStm.Write(bw,0,bw.Length); //将字符串转为字节数组} //写入网络private string AuthStream(string strCmd)

( 〃连接服务器输出字符串try

(byte[]by=System.Text.E ncoding.Defau lt.GetBytes(strCmd);strC md=Conve rt.To Base64Stri n g(by);

}catch(System.Exception ex) //转换成base64编码(return ex.ToString();

}return strCmd;

}public bool tryTran( ref string a)

(stri ng b="";b=a;try

(byte[]outputb=Convert.FromBase64String(a);a=Encoding.Default.GetString(outputb);return true;

} //转换数据类型catch(System.Exception ex)

(a=b;return false;

}

}public void WritInf(string s)

(tryTran(ref s); listBoxMsg. Items.Add(s); )private void

ButtonSend_Click(object sender,EventArgs e)

//定义ButtonSend_Click

( l istBoxMsg. Items.Clear(); //存放smtp服务器返回的信息try(string data; progressBar1.Visible=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来读取数据流

data=AuthStream(Ua);//data); //转换编码格式

WriteStream(data); //发送用户名listBoxMsg. Items.Add(rdStrm.ReadLine());data=AuthStream(Pw);//data); 〃转换编码格式

人地址

data="From:"+TextBoxSend.Text; 〃发送者

WriteStream(data);progressBar1.Value++;data=

WriteStream(data);progressBar1.Value++;data=

WriteStream(data);progressBar1.Value++;data="Rep ly-To:"+TextBoxS en d.Text;

WriteStream(data);progressBar1.Value++;

WriteStream("");progressBar1.Value++; //表示首部结束开始正文

WriteStream(textBoxMai lText.Text);progressBar1.Value++;

WriteStream(".");progressBar1.Value++; //点表示邮件内容结束listBoxMsg. Items.Add(rdStrm.ReadLine());

WriteStream("QUIT");progressBar1.Value++;listBoxMsg. Items.Add(rdStrm.ReadLine());netStm.Close();rdStr m

Mai l Info i=new Mai l Info();i .sender=TextBoxSend.Text; //释放资源i .geter=TextBoxRev.Text;i .Tti le=textBoxSu bject.Text;i .Nei Rong=textBoxMai lText.Text;i .Datatime=DateTime.Now.ToString();

SMai l .Add(i);

MessageBox.Show("邮件发送成功","成功");

} //将发送的消息送到SMai l便于传个收件箱界面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)

( 〃包含表示ASCI I等字符编码的类this.Hide(); 〃

隐藏控件fa.Show();fa.GetSenMai l(SMai l);

)private void Form1_Load(object sender,EventArgs e) //命名空间

(

) //定义类

)

) //定义服务器

下面是接收邮件程序源代码usususing System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net;using System.Net.Mai l;using System.Net.Sockets;using System. IO;using System.Col lections;namespace Mai lSendOfRecive

(public partial class Form2:Form

(public TcpCl ient Server;public NetworkStream NetStrm;public StreamReader RdStrm;public string Data,UsName,Pawd, InEmai ;public byte[]szData,other;public List<Mai l Info>EMai l=new List<Mai l Info>(); //public List<Mai l Info>DMai l=new List<Mai l Info>();public List<Mai l Info>SndMai l=new List<Mai l Info>();public string CRLF="\r\n”;public Fi leStream fs;public int InfoID,BackId;public int DeleTxt=-1;

DataTable dt=new DataTable();public Form2(string Uname,string Pwd,string IEM)

//声明写入流

//数据表了类似于数据库可以存放数据

博鳌云¥799/月,香港110Mbps(含10M CN2)大带宽独立服务器/E3/8G内存/240G/500G SSD或1T HDD

博鳌云是一家以海外互联网基础业务为主的高新技术企业,运营全球高品质数据中心业务。自2008年开始为用户提供服务,距今11年,在国人商家中来说非常老牌。致力于为中国用户提供域名注册(国外接口)、免费虚拟主机、香港虚拟主机、VPS云主机和香港、台湾、马来西亚等地服务器租用服务,各类网络应用解決方案等领域的专业网络数据服务。商家支持支付宝、微信、银行转账等付款方式。目前香港有一款特价独立服务器正在促销,...

简单测评v5.net的美国cn2云服务器:电信双程cn2+联通AS9929+移动直连

v5.net一直做独立服务器这块儿的,自从推出云服务器(VPS)以来站长一直还没有关注过,在网友的提醒下弄了个6G内存、2核、100G SSD的美国云服务器来写测评,主机测评给大家趟雷,让你知道v5.net的美国云服务器效果怎么样。本次测评数据仅供参考,有兴趣的还是亲自测试吧! 官方网站:https://v5.net/cloud.html 从显示来看CPU是e5-2660(2.2GHz主频),...

RAKsmart 黑色星期五云服务器七折优惠 站群服务器首月半价

一年一度的黑色星期五和网络星期一活动陆续到来,看到各大服务商都有发布促销活动。同时RAKsmart商家我们也是比较熟悉的,这次是继双十一活动之后的促销活动。在活动产品中基本上沿袭双11的活动策略,比如有提供云服务器七折优惠,站群服务器首月半价、还有新人赠送红包等活动。如果我们有需要RAKsmart商家VPS、云服务器、独立服务器等产品的可以看看他们家的活动。这次活动截止到11月30日。第一、限时限...

smtp为你推荐
暴风影音怎么截图暴风影音怎么截屏啊?什么是电子邮件 什么是电子邮件1433端口如何打开1433端口在线代理网站求有效的代理服务器地址?iphone越狱后怎么恢复已经越狱的iphone怎么恢复到原来的系统网易公开课怎么下载网易公开课的视频该如何下载?直播加速有没有软件使已经下载好了的视频播放加速,例如30分钟的视频15分钟或者20分钟播放完开机滚动条电脑开机滚动条要走好几次创维云电视功能创维云电视是指什么ios系统iOS系统为什么那么好
域名备案查询 中文域名申请 科迈动态域名 smartvps 日本软银 堪萨斯服务器 腾讯云数据库 godaddy 主机合租 绍兴高防 天互数据 tna官网 服务器是干什么的 hdd 789电视剧 怎么建立邮箱 shuang12 web应用服务器 阿里云免费邮箱 深圳域名 更多