版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 網(wǎng)絡(luò)編程實(shí)訓(xùn)報告</b></p><p> 題目: 基于STMP與POP3協(xié)議的郵件發(fā)送與接收 </p><p> 姓 名: </p><p> 學(xué) 院: </p><p><b> 專 業(yè):
2、 </b></p><p> 班 級: </p><p> 學(xué) 號: </p><p> 指導(dǎo)教師: </p><p> 完成日期: 年 月 日</p><p><b> 原創(chuàng)性聲明</b></
3、p><p> 本人鄭重聲明:上交的設(shè)計(jì)報告,是本人在導(dǎo)師的指導(dǎo)下,獨(dú)立進(jìn)行研究工作所取得的成果。除文中已經(jīng)注明引用的內(nèi)容外,本文不包含任何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品成果。對本文的研究作出重要貢獻(xiàn)的個人和集體,均已在文中以明確方式標(biāo)明。本人完全意識到本聲明的法律結(jié)果由本人承擔(dān)。</p><p><b> 作者簽名:</b></p><p&g
4、t; 日期: 年 月 日</p><p><b> 前言</b></p><p> 電子郵件指用電子手段傳送信件、單據(jù)、資料等信息的通信方法。電子郵件綜合了電話通信和郵政信件的特點(diǎn),它傳送信息的速度和電話一樣快,又能象信件一樣使收信者在接收端收到文字記錄。電子郵件系統(tǒng)又稱基于計(jì)算機(jī)的郵件報文系統(tǒng)。它承擔(dān)從郵件進(jìn)入系統(tǒng)到郵件到達(dá)目的地為止的全部處理過程。電子郵
5、件不僅可利用電話網(wǎng)絡(luò),而且可利用任何通信網(wǎng)傳送。在利用電話網(wǎng)絡(luò)時,還可利用其非高峰期間傳送信息,這對于商業(yè)郵件具有特殊價值。由中央計(jì)算機(jī)和小型計(jì)算機(jī)控制的面向有限用戶的電子系統(tǒng)可以看作是一種計(jì)算機(jī)會議系統(tǒng)。</p><p> SMTP 是一種提供可靠且有效電子郵件傳輸?shù)膮f(xié)議。 SMTP 是建模在 FTP 文件傳輸服務(wù)上的一種郵件服務(wù),主要用于傳輸系統(tǒng)之間的郵件信息并提供來信有關(guān)的通知。</p>&
6、lt;p> POP 協(xié)議允許工作站動態(tài)訪問服務(wù)器上的郵件,目前已發(fā)展到第三版,稱為 POP3。POP3 允許工作站檢索郵件服務(wù)器上的郵件。POP3 傳輸?shù)氖菙?shù)據(jù)消息,這些消息可以是指令,也可以是應(yīng)答。</p><p> 本實(shí)踐是在SMTP和POP協(xié)議下設(shè)計(jì)的一個電子郵箱,能夠?qū)崿F(xiàn)發(fā)送,接收郵件等功能。</p><p><b> 第一章 需求分析</b>&
7、lt;/p><p><b> 1.1 發(fā)送郵件</b></p><p> 發(fā)送端使用SMTP 發(fā)送郵件到郵件服務(wù)器</p><p><b> 發(fā)送郵件過程:</b></p><p> 輸入發(fā)件人郵箱、用戶名、密碼,當(dāng)與郵件服務(wù)器建立連接后,編寫郵件主題和內(nèi)容,若需要附件的話,就點(diǎn)擊添加附件按鈕
8、進(jìn)行添加附件。最后點(diǎn)擊發(fā)送按鈕發(fā)送郵件</p><p><b> 1.2 接收郵件</b></p><p> 接收端使用POP3從郵件服務(wù)器上下載郵件,并在接收端上閱讀。</p><p><b> 接收郵件過程:</b></p><p> 輸入用戶名和密碼與郵件服務(wù)器連接,在文本框中顯示出服
9、務(wù)器上所接收的郵件,對需要的閱讀的郵件點(diǎn)擊閱讀下載到接收端進(jìn)行閱讀。在狀態(tài)欄上顯示于郵件服務(wù)器的連接狀態(tài),以及顯示連接過程。若對于不需要的郵件,可在文本框選中,點(diǎn)擊刪除按鈕刪除。</p><p><b> 第二章總體設(shè)計(jì)</b></p><p> 2.1 總體設(shè)計(jì)原理</p><p> 電子郵件的工作過程遵循客戶-服務(wù)器模式。每份電子郵
10、件的發(fā)送都要涉及到發(fā)送方與接收方,發(fā)送方式構(gòu)成客戶端,而接收方構(gòu)成服務(wù)器,服務(wù)器含有眾多用戶的電子信箱。發(fā)送方通過郵件客戶程序,將編輯好的電子郵件向郵局服務(wù)器(SMTP服務(wù)器)發(fā)送。郵局服務(wù)器識別接收者的地址,并向管理該地址的郵件服務(wù)器(POP3服務(wù)器)發(fā)送消息。</p><p> 一個郵件系統(tǒng)的傳輸包含用戶代理User Agent傳輸代理TransferAgent 及接受代理DeliveryAgent三大部分
11、。</p><p> 用戶代理是一個用戶發(fā)信和收信的程序, 負(fù)責(zé)將電子郵件按照一定的標(biāo)準(zhǔn)包裝, 然后送至郵件服務(wù)器, 或由郵件服務(wù)器收回。傳輸代理負(fù)責(zé)信件的交換和傳輸。將信件傳送至適當(dāng)?shù)泥]件主機(jī), 再由接受代理將信件分發(fā)至不同的郵件信箱。傳輸代理必須要能夠接受用戶郵件程序送來的信件, 解讀收信人的地址, 根據(jù)SMTP 協(xié)議將它正確無誤地傳遞到目的地。現(xiàn)在一般的傳輸代理已采用Sendmail程序完成工作。電子郵件
12、到達(dá)郵件主機(jī)后, 在經(jīng)接收代理POP協(xié)議被用戶讀取至自己的主機(jī)。</p><p> 電子郵件在發(fā)送與接收過程中都要遵循SMTP、POP3等協(xié)議,這些協(xié)議確保了電子郵件在各種不同系統(tǒng)之間的傳輸。其中,SMTP負(fù)責(zé)電子郵件的發(fā)送,而POP3則用于接收Internet上的電子郵件。</p><p> SMTP(Simple Mail Transfer Protocol, SMTP)即簡單郵件
13、傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來控制信件的中轉(zhuǎn)方式。SMTP協(xié)議屬于TCP/IP協(xié)議族,它幫助每臺計(jì)算機(jī)在發(fā)送或中轉(zhuǎn)信件時找到下一個目的地。通過SMTP協(xié)議所指定的服務(wù)器,我們就可以把E-mail寄到收信人的服務(wù)器上</p><p> POP3(Post Office Protocol 3)即郵局協(xié)議,目前已發(fā)展到第三版,稱POP3。它規(guī)定怎樣將個人計(jì)算機(jī)連接到Internet的郵
14、件服務(wù)器和下載電子郵件的電子協(xié)議。它是因特網(wǎng)電子郵件的第一個離線協(xié)議標(biāo)準(zhǔn),POP3允許用戶從服務(wù)器上把郵件存儲到本地主機(jī)(即自己的計(jì)算機(jī))上,同時刪除保存在郵件服務(wù)器上的郵件,而POP3服務(wù)器則是遵循POP3協(xié)議的接收郵件服務(wù)器,用來接收電子郵件的??偟膩碚fPOP3協(xié)議是讓用戶把服務(wù)器上的信收到本地來所需要的一種協(xié)議。</p><p> 本程序?yàn)橐粋€基于SMTP和POP3協(xié)議的小型EMAIL收發(fā)程序,簡單的實(shí)現(xiàn)
15、了郵件的收發(fā)功能。</p><p> 第三章詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 3.1設(shè)計(jì)思路</b></p><p> 本次設(shè)計(jì)主要基于POP3協(xié)議的基礎(chǔ)上實(shí)現(xiàn)的,首先詳細(xì)了解一下POP3協(xié)議</p><p><b> POP3協(xié)議</b></p><p>
16、 1. POP適用于C/S結(jié)構(gòu)的脫機(jī)模型的電子郵件協(xié)議,目前已發(fā)展到第三版,稱POP3。脫機(jī)模型即不能在線操作。</p><p> 2.當(dāng)客戶機(jī)與服務(wù)器連接并查詢新電子郵件時,被該客戶機(jī)指定的所有將被下載的郵件都將被程序下載到客戶機(jī),下載后,電子郵件客戶機(jī)就可以刪除或修改任意郵件,而無需與電子郵件服務(wù)器進(jìn)一步交互。</p><p> 3. POP3客戶向POP3服務(wù)器發(fā)送命令并等待響
17、應(yīng),POP3命令采用命令行形式,用ASCII碼表示。服務(wù)器響應(yīng)是由一個單獨(dú)的命令行組成,或多個命令行組成,響應(yīng)第一行以ASCII文本+OK或-ERR指出相應(yīng)的操作狀態(tài)是成功還是失敗。</p><p> 4. 在POP3協(xié)議中有三種狀態(tài),認(rèn)可狀態(tài),處理狀態(tài)和更新狀態(tài)。當(dāng)客戶機(jī)與服務(wù)器建立聯(lián)系時,一旦客戶機(jī)提供了自己身份并成功確認(rèn),即由認(rèn)可狀態(tài)轉(zhuǎn)入處理狀態(tài),在完成相應(yīng)的操作后客戶機(jī)發(fā)出quit命令,則進(jìn)入更新狀態(tài),
18、更新之后最后重返認(rèn)可狀態(tài)。如下圖</p><p> 等待連接身份確認(rèn)quit命令</p><p> ——|認(rèn)可|—————|處理|——————|更新|</p><p><b> 重返認(rèn)可狀態(tài)</b></p><p> 5.認(rèn)可狀態(tài)的命令語句。一般情況下,大多數(shù)現(xiàn)有的POP3客戶與服務(wù)器執(zhí)行采用ASCII明文發(fā)送用
19、戶名和口令,在認(rèn)可狀態(tài)等待客戶連接的情況下,客戶發(fā)出連接,并由命令user/pass對在網(wǎng)絡(luò)上發(fā)送明文用戶名和口令給服務(wù)器</p><p> 進(jìn)行身份確認(rèn)。一旦確認(rèn)成功,便轉(zhuǎn)入處理狀態(tài)。為了避免發(fā)送明文口令的問題,有一種新的認(rèn)證方法,命令為APOP,使用APOP,口令在傳輸之前被加密。當(dāng)?shù)谝淮闻c服務(wù)器連接時,POP3服務(wù)器向客戶機(jī)發(fā)送一個ASCII碼問候,這個問候由一串字符組成對每個客戶機(jī)是唯一的,與當(dāng)時的時間
20、有關(guān),然后,客戶機(jī)把它的純文本口令附加到從服務(wù)器接收到的字符串之后,然后計(jì)算出結(jié)果字符串的MD5單出函數(shù)消息摘要,客戶機(jī)把用戶名與MD5消息摘要作為APOP命令的參數(shù)一起發(fā)送出去。目前,大多數(shù)windows上的郵件客戶軟件不支持APOP命令,qpopper支持。</p><p> 6.POP3命令碼如下:</p><p><b> 命令參數(shù)狀態(tài)描述</b><
21、/p><p> 假設(shè)用C表示客戶端(Client),S表示服務(wù)器端(Server)。</p><p><b> 1) 授權(quán)狀態(tài)</b></p><p> 客戶端首先與POP3服務(wù)器建立TCP連接,服務(wù)器接收后發(fā)送一個單行的確認(rèn)信息。此時POP3會話就進(jìn)入了授權(quán)狀態(tài)。在授權(quán)狀態(tài),客戶需要向服務(wù)器發(fā)送用戶名和密碼進(jìn)行確認(rèn),具體命令如下: <
22、;/p><p><b> 1>發(fā)送用戶名:</b></p><p> 語法形式:USER <用戶名></p><p> 功能:將客戶的用戶名發(fā)送到服務(wù)器。</p><p> 服務(wù)器返回:+OK正確的用戶名;-ERR錯誤的用戶名。</p><p> 示例:C:USER myn
23、ame@126.com</p><p> S:+OK welcome on this server.</p><p> 2>用戶名確認(rèn)成功后,需要輸入密碼:</p><p> 語法形式:PASS <密碼></p><p> 功能:將客戶的密碼發(fā)送給服務(wù)器。</p><p> 服務(wù)器返回:+O
24、K正確的用戶名;-OK錯誤的用戶名。</p><p><b> 2) 操作狀態(tài)</b></p><p> 授權(quán)成功后, POP3會話將進(jìn)入操作狀態(tài),客戶就可以執(zhí)行POP3命令進(jìn)行相應(yīng)的操作。對于每個命令,服務(wù)器都會返回應(yīng)答信息。下面是在操作狀態(tài)中使用的命令:</p><p><b> 1>STAT命令</b>
25、</p><p><b> 語法形式:STAT</b></p><p> 功能:從服務(wù)器中獲郵件總數(shù)和總字節(jié)數(shù)。</p><p> 服務(wù)器返回:郵件總數(shù)和總字節(jié)數(shù)。</p><p><b> 示例:C:STAT</b></p><p> S:+OK 2 320<
26、;/p><p><b> 2>LIST命令</b></p><p><b> 語法形式:LIST</b></p><p> 功能:從服務(wù)中獲得郵件列表和大小。 </p><p> 服務(wù)器返回:列出郵件列表和大小。</p><p><b> 示例:C
27、:LIST</b></p><p> S:+OK 2 messages (320 octets)</p><p><b> S:1 120</b></p><p> S:2 200 </p><p><b> 3>RETR命令</b></p>
28、;<p> 語法形式:RETR <郵件的序號> </p><p> 功能:從服務(wù)器中獲得一個郵件。</p><p> 服務(wù)器返回:+OK成功;-ERR錯誤。</p><p> 示例:C: RETR 1</p><p> S:+OK 120 octets</p><p> S
29、:<服務(wù)器發(fā)送信件1內(nèi)容></p><p><b> S: .</b></p><p> 注意,這里的“.”是單獨(dú)發(fā)送的。 </p><p><b> 4>DELE命令</b></p><p> 語法形式:DELE <郵件的序號> </p><
30、;p> 功能:服務(wù)器將郵件標(biāo)記為刪除,當(dāng)執(zhí)行QUIT命令時才真正刪除。</p><p> 服務(wù)器返回:+OK成功;-ERR錯誤。</p><p> 示例:C:DELE 1</p><p> S:+OK 1 Deleted</p><p> 示例:C:PASS ***** </p><p> S:+OK
31、 myname logged in at 19:04響應(yīng)</p><p><b> 3.2源代碼</b></p><p><b> 發(fā)送端:</b></p><p> private void textBoxUserName_TextChanged(object sender, EventArgs e)</p
32、><p> { labelUserName.Visible = !Regex.IsMatch(textBoxUserName.Text,</p><p> @"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");</p><p><b> }</b></p&
33、gt;<p> private void textBoxPassword_TextChanged(object sender, EventArgs e)</p><p> { labelPassword.Visible = !Regex.IsMatch(textBoxPassword.Text, @"^\w{5,20}$");</p><p><
34、;b> }</b></p><p> private void textBoxReceive_TextChanged(object sender, EventArgs e)</p><p> { labelReceive.Visible = !Regex.IsMatch(textBoxReceive.Text,</p><p> @&q
35、uot;^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");</p><p><b> }</b></p><p> private void textBoxSubject_TextChanged(object sender, EventArgs e)</p><p> {
36、 labelSubject.Visible = !Regex.IsMatch(textBoxSubject.Text, @"^.{1,}$");</p><p><b> }</b></p><p> private void textBoxBody_TextChanged(object sender, EventArgs e)</p&
37、gt;<p> { labelBody.Visible = !Regex.IsMatch(textBoxBody.Text, @"^.{1,}$");</p><p><b> }</b></p><p> private void buttonSend_Click(object sender, EventArgs e)&l
38、t;/p><p> { string invalidString = "";</p><p> if (labelUserName.Visible == true) invalidString += "用戶名、";</p><p> if (labelPassword.Visible == true) invalidSt
39、ring += "口令、";</p><p> if (labelReceive.Visible == true) invalidString += "收件人、";</p><p> if (labelSubject.Visible == true) invalidString += "主題、";</p><
40、;p> if (labelBody.Visible == true) invalidString += "郵件內(nèi)容、";</p><p> //if (invalidString.Length > 0)</p><p><b> //{</b></p><p> // MessageBox.Show
41、(invalidString.TrimEnd(' ') + "不合規(guī)定");</p><p><b> //}</b></p><p><b> else</b></p><p> { MailAddress from = new MailAddress(textBoxUser
42、Name.Text);</p><p> MailAddress to = new MailAddress(textBoxReceive.Text);</p><p> MailMessage message = new MailMessage(from, to);</p><p> message.Subject = textBoxSubject.Text;
43、</p><p> message.SubjectEncoding = System.Text.Encoding.UTF8;</p><p> message.Body = textBoxBody.Text;</p><p> message.BodyEncoding = System.Text.Encoding.UTF8;</p><p&
44、gt; if (listBox1.Items.Count > 0)</p><p><b> {</b></p><p> for (int i = 0; i < listBox1.Items.Count; i++)</p><p><b> {</b></p><p> At
45、tachment attachFile = new Attachment(listBox1.Items[i].ToString());</p><p> message.Attachments.Add(attachFile);</p><p><b> }</b></p><p><b> }</b></p&g
46、t;<p><b> try</b></p><p> { SmtpClient client = new SmtpClient("smtp." + from.Host);</p><p> SendMail(client, from, textBoxPassword.Text, to, message);</p>
47、<p> MessageBox.Show("郵件發(fā)送出去");</p><p><b> }</b></p><p> catch (SmtpException err)</p><p> { if (err.StatusCode == SmtpStatusCode.GeneralFailure)
48、</p><p><b> {</b></p><p><b> try</b></p><p> { SmtpClient client = new SmtpClient(from.Host);</p><p> SendMail(client, from, textBoxPasswo
49、rd.Text, to, message);</p><p> MessageBox.Show("郵件發(fā)送出去");</p><p><b> }</b></p><p> catch (SmtpException err1)</p><p> { MessageBox.Show(err1
50、.Message, "出錯");</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> { MessageBox.Show(err.Message, "
51、出錯");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> private void Se
52、ndMail( SmtpClient client, MailAddress from, string password, MailAddress to, MailMessage message)</p><p><b> {</b></p><p> client.UseDefaultCredentials = false;</p><p&g
53、t; client.Credentials = new NetworkCredential(from.Address, password);</p><p> client.DeliveryMethod = SmtpDeliveryMethod.Network;</p><p> try {client.Send(message);}</p><p><
54、;b> catch</b></p><p><b> { throw;</b></p><p><b> }</b></p><p><b> finally</b></p><p> { message.Dispose();</p>
55、;<p><b> }</b></p><p><b> }</b></p><p> private void buttonAddAttachment_Click(object sender, EventArgs e)</p><p><b> {</b></p>
56、<p> OpenFileDialog myOpenFileDialog = new OpenFileDialog();</p><p> myOpenFileDialog.CheckFileExists = true;</p><p> myOpenFileDialog.ValidateNames = true;</p><p> myOpen
57、FileDialog.Multiselect = true;</p><p> myOpenFileDialog.ShowDialog();</p><p> if (myOpenFileDialog.FileNames.Length > 0)</p><p><b> {</b></p><p> lis
58、tBox1.Items.AddRange(myOpenFileDialog.FileNames);</p><p><b> }</b></p><p><b> }</b></p><p> private void button1_Click(object sender, EventArgs e)</p&g
59、t;<p><b> {</b></p><p> this.Hide();</p><p> FormReceiveMail re = new FormReceiveMail();</p><p> re.Show();</p><p><b> }</b></p&g
60、t;<p><b> }</b></p><p><b> }</b></p><p><b> 接收端:</b></p><p> private void connect_Click(object sender, EventArgs e)</p><p&g
61、t;<b> {</b></p><p> //將光標(biāo)置為等待狀態(tài)</p><p> Cursor cr = Cursor.Current;</p><p> Cursor.Current = Cursors.WaitCursor;</p><p> //用110端口新建POP3服務(wù)器連接</p>
62、<p> Server = new TcpClient(textBoxpop3.Text, 110);</p><p> listBoxstatus.Items.Clear();</p><p><b> try</b></p><p><b> {</b></p><p>&l
63、t;b> //初始化</b></p><p> NetStrm = Server.GetStream();</p><p> RdStrm = new StreamReader(Server.GetStream());</p><p> listBoxstatus.Items.Add(RdStrm.ReadLine());</p>
64、;<p><b> //登錄服務(wù)器過程</b></p><p> Data = "USER " + textBoxuser.Text + CRLF;</p><p> szData = System.Text.Encoding.UTF8.GetBytes(Data.ToCharArray());</p><p
65、> NetStrm.Write(szData, 0, szData.Length);</p><p> listBoxstatus.Items.Add(RdStrm.ReadLine());</p><p> Data = "PASS " + textBoxpass.Text + CRLF;</p><p> szData = Sy
66、stem.Text.Encoding.UTF8.GetBytes(Data.ToCharArray());</p><p> NetStrm.Write(szData, 0, szData.Length);</p><p> listBoxstatus.Items.Add(RdStrm.ReadLine());</p><p> //向服務(wù)器發(fā)送STAT命令,
67、從而取得郵箱的相關(guān)信息:郵件數(shù)量和大小</p><p> Data = "STAT" + CRLF;</p><p> szData = System.Text.Encoding.UTF8.GetBytes(Data.ToCharArray());</p><p> NetStrm.Write(szData, 0, szData.Lengt
68、h);</p><p> listBoxstatus.Items.Add(RdStrm.ReadLine());</p><p><b> //改變按鈕的狀態(tài)</b></p><p> connect.Enabled = false;</p><p> disconnect.Enabled = true;<
69、/p><p> receive.Enabled = true;</p><p> //將光標(biāo)置回原來狀態(tài)</p><p> Cursor.Current = cr;</p><p><b> }</b></p><p> catch (InvalidOperationException er
70、r)</p><p><b> {</b></p><p> listBoxstatus.Items.Add("Error: " + err.ToString());</p><p><b> }</b></p><p><b> }</b><
71、/p><p> private void disconnect_Click_1(object sender, EventArgs e)</p><p><b> {</b></p><p> //將光標(biāo)置為等待狀態(tài)</p><p> Cursor cr = Cursor.Current;</p><
72、;p> Cursor.Current = Cursors.WaitCursor;</p><p> //向服務(wù)器發(fā)送QUIT命令從而結(jié)束和POP3服務(wù)器的會話</p><p> Data = "QUIT" + CRLF;</p><p> szData = System.Text.Encoding.ASCII.GetBytes(Da
73、ta.ToCharArray());</p><p> NetStrm.Write(szData, 0, szData.Length);</p><p> listBoxstatus.Items.Add(RdStrm.ReadLine());</p><p><b> //斷開連接</b></p><p> Ne
74、tStrm.Close();</p><p> RdStrm.Close();</p><p><b> //改變按鈕的狀態(tài)</b></p><p> connect.Enabled = true;</p><p> disconnect.Enabled = false;</p><p>
75、 receive.Enabled = false;</p><p> //將光標(biāo)置回原來狀態(tài)</p><p> Cursor.Current = cr;</p><p><b> }</b></p><p> private void receive_Click(object sender, EventArgs
76、 e)</p><p><b> {</b></p><p> //將光標(biāo)置為等待狀態(tài)</p><p> Cursor cr = Cursor.Current;</p><p> Cursor.Current = Cursors.WaitCursor;</p><p> string s
77、zTemp;</p><p> listBoxcontent.Items.Clear();</p><p><b> try</b></p><p><b> {</b></p><p> //根據(jù)郵件編號從服務(wù)器獲得相應(yīng)郵件</p><p> Data = &qu
78、ot;RETR " + textBoxmailnum.Text + CRLF;</p><p> szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());</p><p> NetStrm.Write(szData, 0, szData.Length);</p><p> sz
79、Temp = RdStrm.ReadLine();</p><p> if (szTemp[0] != '-')</p><p><b> {</b></p><p> //不斷地讀取郵件內(nèi)容,只到結(jié)束標(biāo)志:英文句號</p><p> while (szTemp != ".")
80、</p><p><b> {</b></p><p> listBoxcontent.Items.Add(szTemp);</p><p> szTemp = RdStrm.ReadLine();</p><p><b> }</b></p><p> //若Ba
81、ckupChBox未選中,則收取郵件后,刪除保留在服務(wù)器上的郵件</p><p> /*if(BackupChBox.Checked == false)</p><p><b> {</b></p><p> Data = "DELE" + MailNum.Text + CRLF;</p><p&g
82、t; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());</p><p> NetStrm.Write(szData,0,szData.Length);</p><p> Status.Items.Add(RdStrm.ReadLine());</p><p><b>
83、 }*/</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> listBoxstatus.Items.Add(szTemp);</p><p&g
84、t;<b> }</b></p><p> //將光標(biāo)置回原來狀態(tài)</p><p> Cursor.Current = cr;</p><p><b> }</b></p><p> catch (InvalidOperationException err)</p><
85、p><b> {</b></p><p> listBoxstatus.Items.Add("Error: " + err.ToString());</p><p><b> }</b></p><p><b> }</b></p><p>
86、 private void button1_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> this.Hide();</p><p> FormSendMail sm = new FormSendMail();</p><p> sm.S
87、how();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 第四章 測試</b></p><p><b> 發(fā)送郵件
88、主界面:</b></p><p> 發(fā)送郵件成功后實(shí)例:</p><p><b> 接收郵件主界面:</b></p><p> 接收郵件成功后實(shí)例:</p><p> 第五章 實(shí)訓(xùn)設(shè)計(jì)體會</p><p> 通過這次C#網(wǎng)絡(luò)編程實(shí)訓(xùn),對本學(xué)期的與網(wǎng)絡(luò)有關(guān)的課程進(jìn)行了一次總結(jié)和
89、吸收,使知識更加牢固,對課程有了進(jìn)一步的理解,也從中找到今后學(xué)習(xí)和研究的方向。</p><p> 這次實(shí)訓(xùn)的完成與老師的悉心指導(dǎo)是分不開的。感謝他在我學(xué)習(xí)遇到困惑時的指點(diǎn),在這里向老師表示衷心的感謝!</p><p> 同樣還要感謝對本人做出幫助的同學(xué),在此向他們表達(dá)我最真誠的謝意!</p><p><b> 參考文獻(xiàn)</b></p
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于POP3協(xié)議的郵件過濾網(wǎng)關(guān)的研究.pdf
- 基于pop3的郵件監(jiān)測系統(tǒng)的研究與實(shí)現(xiàn)
- 基于POP3的郵件監(jiān)測系統(tǒng)的研究與實(shí)現(xiàn).pdf
- 基于web的POP3電子郵件系統(tǒng)的分析與設(shè)計(jì).pdf
- 基于Libnids開發(fā)包的POP3郵件還原.pdf
- 發(fā)送與接收c
- 基于用戶代理的POP3郵件過濾模型的研究.pdf
- POP3電子郵件客戶端及服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 低頻彈性波的發(fā)送與接收單元設(shè)計(jì).pdf
- 實(shí)驗(yàn)六、多播發(fā)送與接收程序設(shè)計(jì)
- 無線hart發(fā)送與接收代碼
- 基于rf1100模塊的無線發(fā)送與接收系統(tǒng)的設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 基于rf1100模塊的無線發(fā)送與接收系統(tǒng)【畢業(yè)設(shè)計(jì)】
- 課程設(shè)計(jì)---電子郵件客戶端發(fā)送功能
- 畢業(yè)設(shè)計(jì)----汽車行駛信息發(fā)送與接收器的設(shè)計(jì)
- POP3協(xié)議的安全策略研究及其實(shí)現(xiàn).pdf
- 操作系統(tǒng)實(shí)驗(yàn) 消息的發(fā)送與接收
- 單片機(jī)課程設(shè)計(jì)----紅外線接收發(fā)送裝置設(shè)計(jì)
- vhdl課程設(shè)計(jì)--vhdl數(shù)字信號發(fā)送和接收電路
- Android工業(yè)現(xiàn)場數(shù)據(jù)發(fā)送與接收平臺研發(fā).pdf
評論
0/150
提交評論