




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、設(shè)計思想電子郵件指用電子手段傳送信件、單據(jù)、資料等信息的通信方法。電子郵件綜合了電話通信和郵政信件的特點,它傳送信息的速度和電話一樣快,又能象信件一樣使收信者在接收端收到文字記錄。電子郵件系統(tǒng)又稱基于計算機的郵件報文系統(tǒng)。它承擔(dān)從郵件進(jìn)入系統(tǒng)到郵件到達(dá)目的地為止的全部處理過程。電子郵件不僅可利用電話網(wǎng)絡(luò),而且可利用任何通信網(wǎng)傳送。在利用電話網(wǎng)絡(luò)時,還可利用其非高峰期間傳送信息,這對于商業(yè)郵件具有特殊價值。由中央計算機和小型計算機控制的面向有限用戶的電子系統(tǒng)可以看作是一種計算機會議系統(tǒng)。電子郵件的工作過程遵循客戶-服務(wù)器模式。每份電子郵件的發(fā)送都要涉及到發(fā)送方與接收方,發(fā)送方式構(gòu)成客戶端,而
2、接收方構(gòu)成服務(wù)器,服務(wù)器含有眾多用戶的電子信箱。發(fā)送方通過郵件客戶程序,將編輯好的電子郵件向郵局服務(wù)器(SMTP服務(wù)器)發(fā)送。郵局服務(wù)器識別接收者的地址,并向管理該地址的郵件服務(wù)器(POP3服務(wù)器)發(fā)送消息。一個郵件系統(tǒng)的傳輸包含用戶代理User Agent傳輸代理TransferAgent及接受代理DeliveryAgent三大部分。用戶代理是一個用戶發(fā)信和收信的程序,負(fù)責(zé)將電子郵件按照一定的標(biāo)準(zhǔn)包裝,然后送至郵件服務(wù)器,或由郵件服務(wù)器收回。傳輸代理負(fù)責(zé)信件的交換和傳輸。將信件傳送至適當(dāng)?shù)泥]件主機,再由接受代理將信件分發(fā)至不同的郵件信箱。傳輸代理必須要能夠接受用戶郵件程序送來的信件,解讀收信
3、人的地址,根據(jù)SMTP協(xié)議將它正確無誤地傳遞到目的地?,F(xiàn)在一般的傳輸代理已采用Sendmail程序完成工作。電子郵件到達(dá)郵件主機后,在經(jīng)接收代理POP協(xié)議被用戶讀取至自己的主機。電子郵件在發(fā)送與接收過程中都要遵循SMTP、POP3等協(xié)議,這些協(xié)議確保了電子郵件在各種不同系統(tǒng)之間的傳輸。其中,SMTP負(fù)責(zé)電子郵件的發(fā)送,而POP3則用于接收Internet上的電子郵件。SMTP(SimpleMailTransferProtocol)即簡單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來控制信件的中轉(zhuǎn)方式。SMTP協(xié)議屬于TCPIP協(xié)議族,它幫助每臺計算機在發(fā)送或中轉(zhuǎn)信件時找到下
4、一個目的地。通過SMTP協(xié)議所指定的服務(wù)器,我們就可以把Email寄到收信人的服務(wù)器上了,整個過程只要幾分鐘。SMTP服務(wù)器則是遵循SMTP協(xié)議的發(fā)送郵件服務(wù)器,用來發(fā)送或中轉(zhuǎn)你發(fā)出的電子郵件。POP3(PostOfficeProtocol3)即郵局協(xié)議,目前已發(fā)展到第三版,稱POP3。它規(guī)定怎樣將個人計算機連接到Internet的郵件服務(wù)器和下載電子郵件的電子協(xié)議。它是因特網(wǎng)電子郵件的第一個離線協(xié)議標(biāo)準(zhǔn),POP3允許用戶從服務(wù)器上把郵件存儲到本地主機(即自己的計算機)上,同時刪除保存在郵件服務(wù)器上的郵件,而POP3服務(wù)器則是遵循POP3協(xié)議的接收郵件服務(wù)器,用來接收電子郵件的??偟膩碚fPOP
5、3協(xié)議是讓用戶把服務(wù)器上的信收到本地來所需要的一種協(xié)議。本程序為一個基于SMTP和POP3協(xié)議的小型EMAIL收發(fā)程序,簡單的實現(xiàn)了郵件的收發(fā)功能。二、算法流程圖USERE-mail用戶操作SMTP協(xié)議POP3協(xié)議郵件服務(wù)器用戶登錄用戶信息郵件信息選擇郵件發(fā)送郵件接收郵件圖1 算法流程圖三、源代碼下面給出的是用登錄程序的源代碼:using System; /導(dǎo)入名字空間using System.Collections.Generic; /包含定義各種對象集合的接口和類using System.ComponentModel;using System.Data;using System.Drawi
6、ng;using System.Linq;using System.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; /定義服務(wù)器public Networ
7、kStream NetStrm;public StreamReader 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
8、= textBox2.Text.Trim(); /用戶名Pwd = textBox3.Text; /密碼Server = new TcpClient(Conn, 110); /服務(wù)器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);/獲取AS
9、CII值NetStrm.Write(szData,0,szData.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; /布爾值設(shè)為真Sender = new Form2(Uname, Pwd, textBox1.Text);thi
10、s.Hide();Sender.Show();else if (Inf.IndexOf(-OK)-1) /判斷索引MessageBox.Show(密碼或者用戶名錯誤, 用戶驗證); /文本框顯示信息Data = QUIT;szData = System.Text.Encoding.ASCII.GetBytes(Data);NetStrm.Write(szData, 0, szData.Length); /寫入數(shù)據(jù)catch (System.Exception ex)MessageBox.Show(ex.Message); /文本框顯示信息private void Form3_Load(obje
11、ct sender, EventArgs e)/定義Form3_Load下面是發(fā)送郵件程序源代碼using System; /導(dǎo)入名字空間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.Ne
12、t.Sockets;using System.IO;using System.Collections;using System.Data.OleDb;namespace MailSendOfRecive /命名空間public partial class Form1 : Form /定義類TcpClient smtpSrv;NetworkStream netStm; /提供數(shù)據(jù)流string CRLF = rn;public List SMail = new List();public Form2 fa;public string Ua, Pw, Sv;public Form1(Form2 f
13、,string UN,string Pd,string SR) /創(chuàng)建Form1fa = f;Ua = UN;Pw = Pd;Sv = SR;InitializeComponent(); /初始化public void WriteStream(string strCmd)strCmd += CRLF; /crlf表示結(jié)束byte bw = System.Text.Encoding.Default.GetBytes(strCmd); /將字符串轉(zhuǎn)為字節(jié)數(shù)組netStm.Write(bw,0,bw.Length); /寫入網(wǎng)絡(luò)private string AuthStream(string str
14、Cmd) /連接服務(wù)器輸出字符串trybyte by = System.Text.Encoding.Default.GetBytes(strCmd);strCmd = Convert.ToBase64String(by); /轉(zhuǎn)換成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); /轉(zhuǎn)換數(shù)據(jù)類型
15、a = Encoding.Default.GetString(outputb);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服務(wù)器返回的信息
16、trystring data;progressBar1.Visible = true;progressBar1.Value = 1;smtpSrv = new TcpClient(smtp.+Sv,25);/TextBoxSer.Text,25); /連接smtp服務(wù)器netStm = smtpSrv.GetStream(); /取得Networkstream對象,來發(fā)送接收數(shù)據(jù)StreamReader rdStrm = new StreamReader(smtpSrv.GetStream(); /產(chǎn)生StreamReader來讀取數(shù)據(jù)流WriteStream(EHLO Local); /發(fā)送
17、命令建立連接progressBar1.Value+;listBoxMsg.Items.Add(輸入用戶名開始);WriteStream(AUTH LOGIN); /發(fā)送命令請求驗證listBoxMsg.Items.Add(rdStrm.ReadLine();progressBar1.Value+;data = AuthStream(Ua);/data); /轉(zhuǎn)換編碼格式WriteStream(data); /發(fā)送用戶名listBoxMsg.Items.Add(rdStrm.ReadLine();data = AuthStream(Pw);/data); /轉(zhuǎn)換編碼格式WriteStream(d
18、ata); /發(fā)送listBoxMsg.Items.Add(rdStrm.ReadLine(); progressBar1.Value+;data = MAIL FROM:; /發(fā)件人地址WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine();progressBar1.Value+;data = RCPT TO:; /收件人地址WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine();progressBar1.Value+;WriteStream(DATA); /數(shù)據(jù)listBox
19、Msg.Items.Add(rdStrm.ReadLine();progressBar1.Value+;data = Date:+System.DateTime.Now; /日期WriteStream(data);progressBar1.Value+;data = From: + TextBoxSend.Text; /發(fā)送者WriteStream(data);progressBar1.Value+;data = To: + TextBoxRev.Text; /接收者WriteStream(data);progressBar1.Value+;data = SUBJECT: + textBoxS
20、ubject.Text; /主題WriteStream(data);progressBar1.Value+;data = Reply-To: + TextBoxSend.Text; /發(fā)送回復(fù)地址WriteStream(data);progressBar1.Value+;WriteStream(); /表示首部結(jié)束,開始正文progressBar1.Value+;WriteStream(textBoxMailText.Text);progressBar1.Value+;WriteStream(.); /點表示郵件內(nèi)容結(jié)束progressBar1.Value+;listBoxMsg.Items.
21、Add(rdStrm.ReadLine();WriteStream(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
22、= DateTime.Now.ToString();/將發(fā)送的消息送到SMail便于傳個收件箱界面SMail.Add(i);MessageBox.Show(郵件發(fā)送成功, 成功); /顯示信息catch (System.Exception ex)MessageBox.Show(ex.ToString(), 操作錯誤); /顯示信息private void Form1_FormClosed(object sender, FormClosedEventArgs e)Application.Exit(); /終止所有程序private void button1_Click(object sender
23、, EventArgs e)this.Hide(); /隱藏控件fa.Show();fa.GetSenMail(SMail);private void Form1_Load(object sender, EventArgs e)下面是接收郵件程序源代碼using System; /導(dǎo)入名字空間using System.Collections.Generic; /包含定義各種對象集合的接口和類using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;
24、using System.Windows.Forms;using 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; /定義服務(wù)器public NetworkStream NetStrm;public StreamReader
25、 RdStrm;public string Data,UsName,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
26、(); /數(shù)據(jù)表了,類似于數(shù)據(jù)庫,可以存放數(shù)據(jù)public Form2(string Uname,string Pwd,string IEM)InfoID = -1;InEmai = IEM;/pop.+IEM;UsName = Uname;Pawd = Pwd;InitializeComponent(); /初始化Inint(); /為網(wǎng)格添加標(biāo)題dt.Columns.Add(ID, typeof(int);dt.Columns.Add(主題, typeof(string);dt.Columns.Add(發(fā)件人, typeof(string); /創(chuàng)建對象dt.Columns.Add(時間,
27、 typeof(string);dt.Columns.Add(含有附件, typeof(Boolean); private void Inint() /初始化節(jié)點 TreeNode Node = treeView1.Nodes.Add(Name, 郵件歸檔系統(tǒng));Node.Nodes.Add(Send, 發(fā)件箱);Node.Nodes.Add(Recove, 收件箱);Node.Nodes.Add(GuiDang, 郵件歸檔); /獲取對象的集合Node.Nodes.Add(HuiShou, 回收站);private void ShowInfo()private void buttonCon_
28、Click(object sender, EventArgs e) /定義點擊事件Server = new TcpClient(pop.+InEmai, 110); /初始化服務(wù)器tryNetStrm = Server.GetStream();RdStrm = new StreamReader(NetStrm,System.Text.Encoding.Default);listBoxStatus.Items.Add(RdStrm.ReadLine(); /向列表添加項Data = USER + UsName + CRLF;/textBoxUser.Text+CRLF;szData = Syst
29、em.Text.Encoding.Default.GetBytes(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(RdStr
30、m.ReadLine(); /獲取所有的郵件的大小Data = STAT + CRLF;szData = System.Text.Encoding.Default.GetBytes(Data); /獲取編碼NetStrm.Write(szData,0,szData.Length); /寫入數(shù)據(jù)string st = RdStrm.ReadLine();MessageBox.Show(st); /顯示消息框listBoxStatus.Items.Add(st);st = st.Substring(4, 2); /檢索字符串MessageBox.Show(st);int Cout = Int32.
31、Parse(st);if (Cout0)buttonDel.Enabled = true; /設(shè)置控件屬性for (int i = 0; i -1)string st = InfoID.ToString();dt.Rows.Remove(dt.RowsDeleTxt);dataGridView1.DataSource = dt;richTexOfInfo.Text = ;MessageBox.Show(刪除操作成功, 操作成功); /顯示信息catch (System.Exception ex) /顯示錯誤MessageBox.Show(ex.Message); /顯示信息private vo
32、id treeView1_AfterSelect(object sender, TreeViewEventArgs e) /選擇點擊樹節(jié)點時觸發(fā)的事件dt.Clear();richTexOfInfo.Text = SndMailConvert.ToInt32(e.Node.Name).NeiRong;if (dt.Rows.Count0)this.dataGridView1.DataSource = dt; /獲取數(shù)據(jù)源else private void GuiButton_Click(object sender, EventArgs e) /進(jìn)行歸檔treeView1.NodesName.N
33、odesGuiDang.Nodes.Add(ShiYang, 實驗報告); /獲取樹節(jié)點集合treeView1.NodesName.NodesGuiDang.Nodes.Add(Other,其他郵件);foreach (MailInfo a in EMail)if (a.Ttile.IndexOf(實驗報告) 0)treeView1.NodesName.NodesGuiDang.NodesShiYang.Nodes.Add(a.sender, a.sender); /獲取樹節(jié)點集合else treeView1.NodesName.NodesGuiDang.NodesOther.Nodes.Ad
34、d(a.sender, a.sender);GuiButton.Enabled = false; /控件設(shè)為不可用private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) /點擊表格時觸發(fā)的事件DeleTxt = e.RowIndex; /獲取索引InfoID = (int)this.dataGridView10, e.RowIndex.Value; /獲取值foreach (MailInfo a in EMail)if (a.id = InfoID)richT
35、exOfInfo.Text = a.NeiRong; /獲取文本break;public void GetSenMail(List e) /獲取發(fā)件模塊送的數(shù)據(jù)if (e.Count0)foreach (MailInfo a in e)int i = treeView1.NodesName.NodesSend.Nodes.Count;treeView1.NodesName.NodesSend.Nodes.Add(i.ToString(),a.geter);SndMail.Add(a); /添加對象到結(jié)尾處private void button1_Click(object sender, Eve
36、ntArgs e) /跳到發(fā)件界面Form1 Se = new Form1(this, UsName, Pawd, InEmai);this.Hide();Se.Show();private void Form2_FormClosed(object sender, FormClosedEventArgs e) /程序退出處理Application.Exit(); /停止程序private void button2_Click(object sender, EventArgs e) /還原回收站中的數(shù)據(jù)treeView1.NodesName.NodesHuiShou.Nodes.Remove(t
37、reeView1.NodesName.NodesHuiShou.NodesBackId.ToString(); /獲取集合foreach (MailInfo a in DMail)if (a.id = BackId)dt.Rows.Add(new Object a.id, a.Ttile, a.sender, a.Datatime, a.Fujian ); /獲取集合dataGridView1.DataSource = dt; /獲取數(shù)據(jù)源private void Form2_Load(object sender, EventArgs e)public class MailInfo publi
38、c int id;public string sender; /寄件人public string geter; /收件人public Boolean Fujian; /是否有附件public string FJname; /附件名稱public string Ttile; public string NeiRong; /內(nèi)容public string Datatime; /日期public MailInfo() /構(gòu)建MailInfoFujian = false;id = -1;sender = ;geter = ;FJname = ;Ttile = ;NeiRong = ;Datatime = ;四、運行結(jié)果運行結(jié)果有3個界面圖2 登錄界面圖3 發(fā)送郵件界面圖4 接收郵件界面五、遇到的問題及解決這部分我主要遇到了如下兩個問題,其內(nèi)容與解決方法如下所列:l 不清楚SMTP和POP3的區(qū)別。其實一般每個提供電子郵件服務(wù)的網(wǎng)站都有自己的SMTP和POP服務(wù)器地址,在你登錄你的電子郵件網(wǎng)站時仔細(xì)找找肯定能發(fā)現(xiàn)它們,如果找不到還
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 華東師范大學(xué)《風(fēng)景園林設(shè)計實驗古典園林景觀設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢工程大學(xué)郵電與信息工程學(xué)院《立體設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京師范大學(xué)泰州學(xué)院《大學(xué)美育》2023-2024學(xué)年第二學(xué)期期末試卷
- 南昌航空大學(xué)《電路(下)》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南檢察職業(yè)學(xué)院《造型基礎(chǔ)(工設(shè))》2023-2024學(xué)年第二學(xué)期期末試卷
- 河源廣東河源紫金縣專門學(xué)校駐校教官招聘7人筆試歷年參考題庫附帶答案詳解
- 山東農(nóng)業(yè)大學(xué)《組成原理與接口技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西體育職業(yè)學(xué)院《聯(lián)合創(chuàng)作預(yù)案》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國礦業(yè)大學(xué)(北京)《基礎(chǔ)造型》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南2025年河南省工業(yè)學(xué)校招聘20人筆試歷年參考題庫附帶答案詳解-1
- 發(fā)展?jié)h語初級口語I-第18課課件
- GB/T 43200-2023機器人一體化關(guān)節(jié)性能及試驗方法
- XX森林康養(yǎng)度假建設(shè)項目可行性研究報告
- 防災(zāi)減災(zāi)地質(zhì)災(zāi)害防御應(yīng)對講座培訓(xùn)課件ppt
- 小學(xué)奧數(shù)七大模塊思維導(dǎo)圖課件
- 火力發(fā)電廠OVATION 與西門子控制系統(tǒng)之間通訊實現(xiàn)
- 我長大以后【經(jīng)典繪本】
- 2023學(xué)年完整公開課版閘閥
- 中國濕疹診療指南
- 國家電網(wǎng)有限公司電網(wǎng)數(shù)字化項目工作量度量規(guī)范應(yīng)用指南(2020版)
- 電子商務(wù)文案寫作教學(xué)ppt課件(完整版)
評論
0/150
提交評論