2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  信息與軟件工程學(xué)院</b></p><p><b>  課程設(shè)計報告</b></p><p>  題目全稱: 用戶郵件代理 </p><p>  課程名稱: 計算機(jī)網(wǎng)絡(luò)基礎(chǔ)

2、 </p><p><b>  摘 要</b></p><p>  在Visual Studio 2010環(huán)境下開發(fā)程序,完成了一個簡單的HTTP Web服務(wù)器,能夠?qū)崿F(xiàn)HTTP協(xié)議請求報文解析,根據(jù)請求內(nèi)容執(zhí)行相應(yīng)動作,并返回響應(yīng)報文,實(shí)現(xiàn)GET和POST方法。為發(fā)送方提供了圖形界面,用戶可輸入發(fā)送者電子郵件地址、接收者電子郵件地址、報文主題及報文本身,能夠

3、將客戶機(jī)郵件采用恰當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)存儲起來,實(shí)現(xiàn)用戶郵件的發(fā)送和命令的接收。在軟件設(shè)計過程中,將數(shù)據(jù)部分與控制邏輯和現(xiàn)實(shí)部分分開,降低了設(shè)計的復(fù)雜度。在操作上完成的效果也很好,很好地完成了實(shí)驗要求。</p><p>  關(guān)鍵詞:Visual Studio 2010環(huán)境,HTTP Web服務(wù)器,報文解析,響應(yīng)報文。</p><p><b>  ABSTRACT</b><

4、;/p><p>  In the environment of Visual Studio 2010, have completed a simple program about HTTP Web server, HTTP protocol request message parsing, perform the appropriate action based on the contents of the requ

5、est and returns a response packet, GET and POST methods. Provides a graphical interface for the sender, the user can enter the e-mail address of the sender, recipient e-mail address, the theme of packets and packets can

6、be client mail using appropriate data structure stored user mail send and comman</p><p>  Keywords: the environment of Visual Studio 2010, HTTP Web server, message parsing, response packet</p><p&g

7、t;<b>  目錄</b></p><p><b>  第一章 緒論1</b></p><p>  1.1 選題背景及意義1</p><p>  1.2 國內(nèi)外研究現(xiàn)狀1</p><p>  1.3 主要內(nèi)容與章節(jié)安排1</p><p>  1.4 本章小結(jié)1&l

8、t;/p><p>  第二章 課程設(shè)計的需求分析3</p><p>  2.1 環(huán)境需求3</p><p>  2.2 功能需求3</p><p>  2.3 性能需求3</p><p>  2.3 本章小結(jié)3</p><p>  第三章 用戶郵件代理的設(shè)計5</p>&l

9、t;p>  3.1 總體設(shè)計5</p><p>  3.2 功能模塊設(shè)計5</p><p>  3.3 本章小結(jié)5</p><p>  第四章 用戶郵件代理的實(shí)現(xiàn)7</p><p>  4.1 開發(fā)環(huán)境介紹7</p><p>  4.2 主要功能模塊的實(shí)現(xiàn)7</p><p> 

10、 4.3 本章小結(jié)7</p><p>  第五章 測試及成果展示9</p><p>  5.1 測試環(huán)境9</p><p>  5.2 測試用例和結(jié)果9</p><p>  5.3 成果展示9</p><p>  5.4 本章小結(jié)9</p><p>  第六章 總結(jié)與展望11<

11、;/p><p><b>  參考文獻(xiàn)12</b></p><p><b>  第一章 緒論</b></p><p>  1.1 選題背景及意義</p><p>  在當(dāng)今社會下,郵件已成為人們必要的一個通信工具,不管你是什么職業(yè),總會有用到郵件的地方,特別是現(xiàn)在的大學(xué)生以及公司里的職員們,在交作業(yè)的時

12、候,在完成一個項目的過程中一定會有郵件通信,在這個大背景下,因為有需求所以我們做了這樣一個用戶郵件代理.至于意義呢,一個是我們都是小試牛刀,希望通過這個來磨練自己的實(shí)踐能力,第二呢也是希望做出來能方便大家的生活。</p><p>  1.2 國內(nèi)外研究現(xiàn)狀</p><p>  現(xiàn)今,郵件代理基本研究得都比較透徹了,國內(nèi)的比較出名的就有QQ,新浪,163再加上各類高校的郵件域名等,但即便是這

13、樣,我們也希望做出來比較個性的,只屬于我們的郵件代理,也磨練了自己的動手能力。</p><p>  1.3 主要內(nèi)容與章節(jié)安排</p><p>  緒論主要描述研究背景以及意義</p><p>  主要描述需求,如環(huán)境,功能,性能等</p><p>  主要描述設(shè)計,這個系統(tǒng)是怎樣應(yīng)運(yùn)而生的</p><p>  主要描

14、述郵件代理是怎樣實(shí)現(xiàn)的</p><p>  主要描述測試以及如何運(yùn)行的</p><p><b>  總結(jié)</b></p><p><b>  1.4 本章小結(jié)</b></p><p>  本章是緒論,所以主要就描述了一些背景以及研究現(xiàn)狀,和本報告的總體情況,算是為下面幾章做了一個鋪墊,也是報告的開頭

15、</p><p>  第二章 課程設(shè)計的需求分析</p><p><b>  2.1 環(huán)境需求</b></p><p><b>  2.1.1運(yùn)行環(huán)境</b></p><p>  處理器:在任何Intel或與Intel兼容的處理器上運(yùn)行。</p><p>  內(nèi)存:(RAM)

16、:推薦使用2GB。</p><p>  操作系統(tǒng):Windows xp以上版本。</p><p><b>  2.1.2開發(fā)環(huán)境</b></p><p>  軟件:Visual studio 2008以上版本。</p><p>  操作系統(tǒng):Windows xp以上版本。</p><p><

17、b>  2.2 功能需求</b></p><p>  1.為發(fā)送方提供圖形界面,用戶可輸入發(fā)送者電子郵件地址、接收者電子郵件地址、報文主題及報文本身。</p><p>  2.開發(fā)服務(wù)器處理程序,將客戶機(jī)郵件采用恰當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)存儲起來。</p><p>  3.郵件客戶機(jī)與本地郵件服務(wù)器建立TCP連接,向本地郵件服務(wù)器發(fā)送SMTP命令,實(shí)現(xiàn)用戶郵件

18、的發(fā)送和命令接收。</p><p><b>  2.3 性能需求</b></p><p>  1.性能:響應(yīng)時間約為4秒。</p><p>  2.可用性:發(fā)生故障恢復(fù)時間快,大約為10秒,基本不發(fā)生故障。</p><p>  3.易用性:啟動軟件即可按照步驟,一步步完成操作。</p><p> 

19、 4.安全性:安全級別高,可訪問的范圍較大。</p><p><b>  2.3 本章小結(jié)</b></p><p>  本章闡述了軟件設(shè)計的環(huán)境需求,本軟件的功能需求和性能需求,其中環(huán)境需求包括軟件的運(yùn)行環(huán)境需求和軟件的開發(fā)環(huán)境需求,功能需求主要說明了本軟件要實(shí)現(xiàn)的主要的功能,性能需求則指出了本軟件的要實(shí)現(xiàn)的性能方面的要求。</p><p> 

20、 第三章 用戶郵件代理的設(shè)計</p><p><b>  3.1 總體設(shè)計</b></p><p>  本系統(tǒng)需要實(shí)現(xiàn)的功能是用戶郵件代理,提供登錄郵箱,注銷用戶,接收、查看、刪除、回復(fù)郵件,發(fā)送新郵件以及附件相關(guān)的功能。整個系統(tǒng)使用C#制作圖形化界面,包括登錄界面和郵箱操作界面(主界面)。在未登錄郵箱時,郵箱操作界面所有組件禁用,僅提供右上角登錄按鈕和退出按鈕,點(diǎn)擊

21、按鈕進(jìn)入登錄界面,輸入郵箱、密碼以及所用郵箱服務(wù)以后便可以登錄郵箱,如果登錄成功,返回郵箱操作界面后便自動刷新郵件列表,啟用所有操作,右上角的按鈕也將變成注銷按鈕。在郵箱操作界面的收件箱功能里,提供查看、刪除、回復(fù)郵件和下載附件等功能;而在寫信功能里,提供發(fā)送、取消發(fā)送、上傳附件、刪除附件等功能。在點(diǎn)擊郵件后,則會顯示出郵件內(nèi)容。</p><p>  3.2 功能模塊設(shè)計</p><p>

22、  3.2.1 登錄界面的設(shè)計</p><p>  登錄界面是連接POP3服務(wù)器的橋梁,將使用TCP連接服務(wù)器,連接完成后將保持與POP3服務(wù)器的TCP連接。界面包括用戶郵箱和密碼輸入欄,選擇所用郵箱服務(wù)的下拉菜單,提供163,126,sina,qq,yahoo,gmail等郵箱服務(wù),還有登錄按鈕、注銷按鈕和返回按鈕,以及反饋服務(wù)器返回信息的消息界面。</p><p>  進(jìn)入登錄界面后需

23、要輸入完整的用戶信息才能點(diǎn)擊登錄按鈕,同樣需要登錄完成才能點(diǎn)擊注銷按鈕,在連接POP3服務(wù)器過程中,連接信息會顯示在消息界面上。當(dāng)選擇了所用郵箱服務(wù)后,系統(tǒng)就會提供相應(yīng)的smtp和POP3服務(wù)器名。</p><p>  連接POP3服務(wù)器并接收信件的步驟如下:</p><p>  1。連接到pop3服務(wù)器(默認(rèn)端口110)</p><p>  2。發(fā)送用戶名(use

24、r)</p><p>  3。發(fā)送密碼(pass)</p><p>  4。查詢當(dāng)前郵箱狀態(tài)(stat)</p><p>  5。查詢服務(wù)器上所有郵件UID列表(UIDL)</p><p>  6。查詢本地所有郵件的UID列表,從而羅列出新郵件列表(本地UID列表是POP3客戶端記錄在日志文件中的)</p><p> 

25、 7。對所有新郵件查詢其大小(LIST)</p><p>  8。下載所有新郵件(RETR)利用List提供的郵件大小信息</p><p>  9。如果有必要,對所有新郵件標(biāo)志為刪除(DELE)</p><p>  10。結(jié)束對話(QUIT)</p><p>  11。解析本地下載郵件。</p><p>  3.2.2

26、主界面登錄注銷的設(shè)計</p><p>  未登錄時,主界面右上角提供登錄和退出功能,并提醒用戶登錄;登錄以后,右上角提供注銷和退出功能,并歡迎用戶使用。登錄和注銷按鈕都將打開登錄界面,退出按鈕則是退出整個程序,如果沒有注銷就會自動注銷并退出。</p><p>  在從登錄界面返回主界面時,如果登錄成功,系統(tǒng)會實(shí)例化郵件發(fā)送對象,以便以后完成發(fā)送郵件的操作,并給實(shí)例對象賦值;如果注銷成功,系

27、統(tǒng)會銷毀郵件發(fā)送對象和郵件接收對象,并清空收件箱和郵件內(nèi)容。</p><p>  3.2.3 收件箱的設(shè)計</p><p>  收件箱存放的是郵箱中的郵件,顯示的是每一封郵件的發(fā)件人、主題、附件和時間,功能提供附件下載、刷新列表、回復(fù)和刪除郵件等,當(dāng)?shù)卿洺晒?,返回主界面會自動刷新郵件列表,為了避免刷新時間過長造成程序假死,還需要在刷新的同時顯示進(jìn)度條,提醒用戶程序正常運(yùn)行。</p&

28、gt;<p>  更新郵件列表時,系統(tǒng)會實(shí)例化郵件接收類,以此連接服務(wù)器并下載郵件保存在郵件接收類中。再從郵件接收類中依次取出每一封郵件,保存在聲明好的郵件類中,再將信息填在收件箱列表中,同時保存在本地文件中。</p><p>  單擊列表中郵件就可以閱讀郵件內(nèi)容,由于很多郵件分為txt格式和HTML格式,所以兩種格式的內(nèi)容都顯示出來較為妥當(dāng),即郵件的Body和HTMLBody。當(dāng)上下移動列表的選中

29、項時,郵件內(nèi)容也會及時地顯示在右側(cè)的文本框和WebBrowser框中。</p><p>  此外還有刪除郵件、下載附件、回復(fù)郵件等功能,刪除郵件后,應(yīng)斷開POP連接,再重新刷新郵件列表,回復(fù)郵件則將發(fā)件人變成收件人,主題前加上“Re”即可。</p><p>  3.2.4 寫信的設(shè)計</p><p>  寫信需要收件人、主題、內(nèi)容和附件等信息,在填寫完成后便可以發(fā)送

30、郵件。發(fā)送時系統(tǒng)會實(shí)例化一個發(fā)送的郵件,并填寫郵件的信息,然后使用郵件發(fā)送類的發(fā)送功能將郵件發(fā)送至SMTP服務(wù)器上。如果點(diǎn)取消發(fā)送,則會自動切換到收件箱。</p><p>  3.2.5 個人登錄信息的設(shè)計</p><p>  由于登錄界面和主界面(特別是發(fā)送郵件時)均會涉及到用戶登錄郵箱、密碼、POP服務(wù)器和SMTP服務(wù)器的內(nèi)容,所以需要在命名空間下定義一個公共類來存儲以上信息,并作為全

31、局變量使用。</p><p><b>  3.3 本章小結(jié)</b></p><p>  設(shè)計一個好的應(yīng)用程序需要好的框架、算法和耐心,還要考慮到使用者的感受。郵件的發(fā)送依靠的是SMTP服務(wù),將郵件傳送到相應(yīng)SMTP服務(wù)器上。郵件的接收依靠的是POP服務(wù)和TCP服務(wù),先與POP服務(wù)器建立TCP連接,再用POP服務(wù)從服務(wù)器上下載郵件。除了實(shí)現(xiàn)以上功能外,還需要考慮界面的設(shè)

32、計,如何才能在使用上更方便,如何才能看上去更簡潔等等。</p><p>  第四章 用戶郵件代理的實(shí)現(xiàn)</p><p>  4.1 開發(fā)環(huán)境介紹</p><p>  此次課程設(shè)計我們使用Visual Studio 2010開發(fā)環(huán)境,利用C#語言進(jìn)行界面設(shè)計與后臺開發(fā)。同時我們還利用了第三方郵箱操作組件jmail來輔助我們進(jìn)行該課程設(shè)計的開發(fā)。</p>

33、<p>  4.2 主要功能模塊的實(shí)現(xiàn)</p><p>  4.2.1 登陸模塊的實(shí)現(xiàn)</p><p>  4.2.1.1 登陸郵箱</p><p>  登陸郵箱的實(shí)現(xiàn)代碼如下:</p><p>  private void btnLogin_Click(object sender, EventArgs e)</p>

34、<p><b>  {</b></p><p>  if (loginfrm.ShowDialog() == DialogResult.OK)</p><p><b>  {</b></p><p>  Cursor.Current = Cursors.WaitCursor;</p><p&

35、gt;  string username = personalMessage.getUserMail;</p><p>  label1.Text = "您好!\n" + username;</p><p><b>  // 窗體組件</b></p><p>  btnLogin.Visible = false;</p

36、><p>  btnLogout.Visible = true;</p><p>  tabControlMyMailbox.Enabled = true;</p><p>  btnDownLoad.Enabled = false;</p><p>  btnDeleteMail.Enabled = false;</p><

37、p>  // 登陸成功后實(shí)例化郵件發(fā)送對象,以便后面完成發(fā)送郵件的操作</p><p>  // 實(shí)例化郵件發(fā)送類(SmtpClient)對象</p><p>  if (smtpClient == null)</p><p><b>  {</b></p><p>  smtpClient = new SmtpC

38、lient();</p><p>  smtpClient.Host = personalMessage.getSmptServer;</p><p>  //gmail郵箱的port為587,其余默認(rèn)為25</p><p>  int Port = 25;</p><p>  if (smtpClient.Host == "smt

39、p.gmail.com")</p><p><b>  {</b></p><p>  Port = 587;</p><p><b>  }</b></p><p>  smtpClient.Port = Port;</p><p>  // 不使用默認(rèn)憑證,即需

40、要認(rèn)證登陸</p><p>  smtpClient.UseDefaultCredentials = false;</p><p>  smtpClient.Credentials = new NetworkCredential(personalMessage.getUserMail, personalMessage.getPassword);</p><p>  

41、smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;</p><p><b>  }</b></p><p>  // 登陸成功后,自動接收新郵件</p><p><b>  // 開始接收郵件</b></p><p><b>  

42、try</b></p><p><b>  {</b></p><p>  btnRefreshMailList.PerformClick();</p><p><b>  }</b></p><p><b>  catch</b></p><p

43、><b>  {</b></p><p>  MessageBox.Show("讀取郵件列表失??!", "錯誤", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);</p><p><b>  }</b></p><p>

44、;<b>  // 窗體組件</b></p><p>  richtbxMailContentReview.Enabled = true;</p><p>  btnDownLoad.Enabled = true;</p><p>  btnDeleteMail.Enabled = true;</p><p>  tab

45、ControlMyMailbox.Focus();</p><p>  Cursor.Current = Cursors.Default;</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.1.2 注銷登陸</p><p&

46、gt;  注銷登陸的實(shí)現(xiàn)代碼如下:</p><p>  private void btnLogout_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  if (loginfrm.ShowDialog() == DialogResult.Cancel)</p>

47、;<p><b>  {</b></p><p><b>  // 窗體組件</b></p><p>  label1.Text = "請登錄";</p><p>  btnLogin.Visible = true;</p><p>  btnLogout.Visi

48、ble = false;</p><p>  richtbxMailContentReview.Enabled = false;</p><p>  tabControlMyMailbox.Enabled = false;</p><p>  // SmtpClient 對象銷毀</p><p>  if (smtpClient != nul

49、l)</p><p><b>  {</b></p><p>  smtpClient.Dispose();</p><p><b>  }</b></p><p>  // POP3Class 對象銷毀</p><p>  popClient.Disconnect();&l

50、t;/p><p>  lstViewMailList.Items.Clear();</p><p>  tbxMailboxInfo.Text = "";</p><p>  richtbxMailContentReview.Clear();</p><p>  wbMailContentReview.DocumentText

51、 = "";</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.1.3 退出程序</p><p>  退出程序的實(shí)現(xiàn)代碼如下:</p><p>  private void btnExit_Clic

52、k(object sender, EventArgs e)</p><p><b>  {</b></p><p>  if (btnLogout.Visible == true)</p><p><b>  {</b></p><p>  loginfrm.logout();</p>

53、<p><b>  }</b></p><p><b>  Close();</b></p><p><b>  }</b></p><p>  4.2.2 郵件操作模塊的實(shí)現(xiàn)</p><p>  4.2.2.1 更新郵件并彈出進(jìn)度條</p><

54、p>  更新郵件并彈出進(jìn)度條的實(shí)現(xiàn)代碼如下:</p><p>  progressbarForm pbfrm;//實(shí)例化進(jìn)度條窗口</p><p>  private void btnRefreshMailList_Click(object sender, EventArgs e)</p><p><b>  {</b></p>

55、;<p>  pbfrm = new progressbarForm();</p><p>  Thread fThread = new Thread(new ThreadStart(refreshMailList));//開辟一個新的線程</p><p>  fThread.Start();</p><p>  pbfrm.ShowDialog();

56、</p><p><b>  }</b></p><p>  4.2.2.2 更新郵件列表</p><p>  更新郵件列表的實(shí)現(xiàn)代碼如下:</p><p>  private void refreshMailList()</p><p><b>  {</b></p&

57、gt;<p>  // 實(shí)例化郵件接收類POP3Class</p><p>  popClient = new POP3Class();</p><p><b>  // 連接服務(wù)器</b></p><p>  popClient.Connect(personalMessage.getUserMail, personalMessa

58、ge.getPassword, personalMessage.getPopServer, 110);</p><p>  if (popClient != null)</p><p><b>  {</b></p><p>  if (popClient.Count > 0)</p><p><b> 

59、 {</b></p><p>  lstViewMailList.Items.Clear();</p><p>  tbxMailboxInfo.Text = "共" + popClient.Count + "封郵件";</p><p>  for (int i = 0; i < popClient.Coun

60、t; i++)</p><p><b>  {</b></p><p>  messageMail = popClient.Messages[i + 1];</p><p>  ListViewItem item = new ListViewItem();</p><p>  item.SubItems.Add(mess

61、ageMail.From);// 發(fā)件人</p><p>  item.SubItems.Add(messageMail.Subject);// 主題</p><p>  attachments = messageMail.Attachments;// 附件</p><p>  if (attachments.Count > 0)</p><

62、;p><b>  {</b></p><p>  item.SubItems.Add(attachments.Count.ToString());// 附件數(shù)量</p><p><b>  }</b></p><p><b>  else</b></p><p><

63、b>  {</b></p><p>  item.SubItems.Add("無");</p><p><b>  }</b></p><p>  item.SubItems.Add(messageMail.Date.ToString());// 時間</p><p>  lstVi

64、ewMailList.Items.Add(item);</p><p>  pbfrm.SetTextMessage(100 * (i + 1) / popClient.Count);</p><p>  // 將郵件寫入文件</p><p>  string path = "C:\\EmailContents.txt";</p>

65、<p>  FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write);</p><p>  StreamWriter sw = new StreamWriter(fs);</p><p>  sw.WriteLine("第"+(i+1).ToString()+"封郵

66、件");</p><p>  sw.WriteLine("主題:\n"+messageMail.Subject);</p><p>  sw.WriteLine("時間:\n" + messageMail.Date.ToString());</p><p>  sw.WriteLine("來自:\n&quo

67、t; + messageMail.From);</p><p>  sw.WriteLine("發(fā)件人:\n" + messageMail.FromName);</p><p>  sw.WriteLine("收件人:\n" + messageMail.RecipientsString);</p><p>  sw.Write

68、Line("正文:\n" + messageMail.Body);</p><p>  sw.WriteLine("EML文本:\n" + messageMail.BodyText);</p><p>  sw.WriteLine("HTML文本:\n" + messageMail.HTMLBody);</p>&l

69、t;p>  sw.Flush();</p><p>  sw.Close();</p><p>  fs.Close();</p><p><b>  }</b></p><p>  pbfrm.enablebtnOK();</p><p><b>  }</b><

70、;/p><p><b>  else</b></p><p><b>  {</b></p><p>  MessageBox.Show("沒有郵件!","提示",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);</p>&

71、lt;p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  MessageBox.Show("讀取郵件列表失敗!&quo

72、t;, "錯誤", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.2.3 發(fā)送郵件</p><p>  發(fā)送郵

73、件的實(shí)現(xiàn)代碼如下:</p><p>  private void btnSend_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  this.Cursor = Cursors.WaitCursor;</p><p>  // 實(shí)例化一個發(fā)送的郵

74、件</p><p>  MailMessage mailMessage = new MailMessage();</p><p>  // 指明郵件發(fā)送的地址,主題,內(nèi)容等信息</p><p>  mailMessage.From = new MailAddress(personalMessage.getUserMail);</p><p>

75、  mailMessage.To.Add(txbSendTo.Text);</p><p>  mailMessage.Subject = txbSubject.Text;</p><p>  mailMessage.SubjectEncoding = Encoding.Default;</p><p>  mailMessage.Body = richtbxBod

76、y.Text;</p><p>  mailMessage.BodyEncoding = Encoding.Default;</p><p>  // 設(shè)置郵件正文不是Html格式的內(nèi)容</p><p>  mailMessage.IsBodyHtml = false;</p><p>  // 設(shè)置郵件的優(yōu)先級為普通優(yōu)先級</p>

77、;<p>  mailMessage.Priority = MailPriority.Normal;</p><p>  //mailMessage.ReplyTo = new MailAddress(tbxUserMail.Text);</p><p>  // 封裝發(fā)送的附件</p><p>  System.Net.Mail.Attachment

78、 attachment = null;</p><p>  if (cmbAttachment.Items.Count > 0)</p><p><b>  {</b></p><p>  for (int i = 0; i < cmbAttachment.Items.Count; i++)</p><p>

79、<b>  {</b></p><p>  string fileNamePath = cmbAttachment.Items[i].ToString();</p><p>  string extName = Path.GetExtension(fileNamePath).ToLower();</p><p>  if (extName ==

80、 ".rar" || extName == ".zip")</p><p><b>  {</b></p><p>  attachment = new System.Net.Mail.Attachment(fileNamePath, MediaTypeNames.Application.Zip);</p><

81、;p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  attachment = new System.Net.Mail.Attachment(fileNamePath, MediaTypeNames.Applica

82、tion.Octet);</p><p><b>  }</b></p><p>  ContentDisposition cd = attachment.ContentDisposition;</p><p>  cd.CreationDate = File.GetCreationTime(fileNamePath);</p>

83、<p>  cd.ModificationDate = File.GetLastWriteTime(fileNamePath);</p><p>  cd.ReadDate = File.GetLastAccessTime(fileNamePath);</p><p>  // 把附件對象加入到郵件附件集合中</p><p>  mailMessage.A

84、ttachments.Add(attachment);</p><p><b>  }</b></p><p><b>  }</b></p><p>  // 發(fā)送寫好的郵件</p><p><b>  try</b></p><p><b>

85、;  {</b></p><p>  // SmtpClient類用于將郵件發(fā)送到SMTP服務(wù)器</p><p>  smtpClient.Send(mailMessage);</p><p>  MessageBox.Show("郵件發(fā)送成功!", "提示", MessageBoxButtons.OK, Mess

86、ageBoxIcon.Information);</p><p><b>  }</b></p><p>  catch (SmtpException smtpError)</p><p><b>  {</b></p><p>  MessageBox.Show("郵件發(fā)送失敗:[&qu

87、ot; + smtpError.StatusCode + "];["</p><p>  + smtpError.Message + "];\r\n[" + smtpError.StackTrace + "]."</p><p>  , "錯誤", MessageBoxButtons.RetryCancel,

88、MessageBoxIcon.Error);</p><p><b>  }</b></p><p><b>  finally</b></p><p><b>  {</b></p><p>  mailMessage.Dispose();</p><p&

89、gt;  this.Cursor = Cursors.Default;</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.2.4 閱讀郵件內(nèi)容</p><p>  閱讀郵件內(nèi)容的實(shí)現(xiàn)代碼如下:</p><p>  pr

90、ivate void ReadMail(object sender, EventArgs e)</p><p><b>  {</b></p><p>  int index = lstViewMailList.SelectedItems[0].Index + indexOffset;</p><p>  messageMail = popCl

91、ient.Messages[index + 1];</p><p>  messageMail.Charset = "gb2312";</p><p>  richtbxMailContentReview.Text = messageMail.Body;</p><p>  wbMailContentReview.DocumentText = m

92、essageMail.HTMLBody;</p><p>  lstViewMailList.Focus();</p><p><b>  }</b></p><p>  private int indexOffset;</p><p>  private void lstViewMailList_KeyDown(obj

93、ect sender, KeyEventArgs e)</p><p><b>  {</b></p><p>  if (e.KeyCode == Keys.Up)</p><p><b>  {</b></p><p>  indexOffset = -1;</p><p&g

94、t;  ReadMail(sender, e);</p><p><b>  }</b></p><p>  if (e.KeyCode == Keys.Down)</p><p><b>  {</b></p><p>  indexOffset = 1;</p><p>

95、  ReadMail(sender, e);</p><p><b>  }</b></p><p>  indexOffset = 0;</p><p><b>  }</b></p><p>  4.2.2.5 回復(fù)發(fā)送</p><p>  回復(fù)發(fā)送的實(shí)現(xiàn)代碼如下:<

96、;/p><p>  private void btnReplyMail_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  if (isSelected() == false) return;</p><p>  int index = lstVie

97、wMailList.SelectedItems[0].Index;</p><p>  messageMail = popClient.Messages[index + 1];</p><p>  // 使寫信選項卡成為當(dāng)前選項卡</p><p>  tabControlMyMailbox.SelectTab(tabPageWriteLetter);</p&g

98、t;<p>  txbSendTo.Text = lstViewMailList.SelectedItems[0].SubItems[1].Text;</p><p>  txbSubject.Text = "Re:" + messageMail.Subject;</p><p>  richtbxBody.Text = "";<

99、/p><p>  richtbxBody.Focus();</p><p><b>  }</b></p><p>  4.2.2.6 刪除郵件</p><p>  刪除郵件的實(shí)現(xiàn)代碼如下:</p><p>  private void btnDeleteMail_Click(object sende

100、r, EventArgs e)</p><p><b>  {</b></p><p>  if (isSelected() == false) return;</p><p>  int index = lstViewMailList.SelectedItems[0].Index;</p><p>  messageM

101、ail = popClient.Messages[index + 1];</p><p>  if (MessageBox.Show("確認(rèn)要刪除郵件 " + messageMail.Subject + " 嗎?", "刪除確認(rèn)", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == Dialo

102、gResult.Yes)</p><p><b>  {</b></p><p>  popClient.DeleteSingleMessage(index + 1);</p><p>  popClient.Disconnect();</p><p>  btnRefreshMailList.PerformClick(

103、);</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.3 附件相關(guān)操作模塊的實(shí)現(xiàn)</p><p>  4.2.3.1 添加附件</p><p>  添加附件的實(shí)現(xiàn)代碼如下:</p><p> 

104、 private void btnAddFile_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  OpenFileDialog openFileDialog = new OpenFileDialog();</p><p>  openFileDialog.Check

105、FileExists = true;</p><p>  // 只接受有效的文件名</p><p>  openFileDialog.ValidateNames = true;</p><p>  // 允許一次選擇多個文件作為附件</p><p>  openFileDialog.Multiselect = true;</p>

106、<p>  openFileDialog.Filter = "所有文件(*.*)|*.*";</p><p>  if (openFileDialog.ShowDialog() != DialogResult.OK)</p><p><b>  {</b></p><p><b>  return;&l

107、t;/b></p><p><b>  }</b></p><p>  if (openFileDialog.FileNames.Length > 0)</p><p><b>  {</b></p><p>  // 因為這里允許選擇多個文件,所以這里用AddRange而沒有用Add方

108、法</p><p>  cmbAttachment.Items.AddRange(openFileDialog.FileNames);</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.3.2 刪除附件</p><p>

109、;  刪除附件的實(shí)現(xiàn)代碼如下:</p><p>  private void btnDeleteFile_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  int index = cmbAttachment.SelectedIndex;</p><

110、p>  if (index == -1)</p><p><b>  {</b></p><p>  MessageBox.Show("請選擇要刪除的附件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);</p><p><

111、b>  return;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  cmbAttachment.Items.RemoveAt(index);</

112、p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.3.3 下載附件</p><p>  下載附件的實(shí)現(xiàn)代碼如下:</p><p>  private void btnDownLoad_Click(object sender,

113、EventArgs e)</p><p><b>  {</b></p><p>  if (isSelected() == false) return;</p><p>  else if (lstViewMailList.SelectedItems[0].SubItems[3].Text == "無")</p>

114、;<p><b>  {</b></p><p>  MessageBox.Show("該郵件沒有附件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);</p><p><b>  return;</b></p>

115、<p><b>  }</b></p><p>  int index = lstViewMailList.SelectedItems[0].Index;</p><p>  messageMail = popClient.Messages[index + 1];</p><p>  attachments = messageMai

116、l.Attachments;</p><p>  for (int i = 0; i < attachments.Count; i++)</p><p><b>  {</b></p><p>  attachment = attachments[i];</p><p>  string attachName =

117、attachment.Name;</p><p>  SaveFileDialog saveFileDialog = new SaveFileDialog();</p><p>  saveFileDialog.FileName = attachName;</p><p>  saveFileDialog.Filter = "所有文件(*.*)|(*.*)

118、";</p><p>  if (saveFileDialog.ShowDialog() != DialogResult.OK)</p><p><b>  {</b></p><p><b>  continue;</b></p><p><b>  }</b>&l

119、t;/p><p>  string filepath = saveFileDialog.FileName;</p><p>  attachment.SaveToFile(filepath);</p><p>  MessageBox.Show("以保存:\r\n" + attachment.Name, "下載完畢", Messa

120、geBoxButtons.OK, MessageBoxIcon.Information);</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.4存儲個人登陸信息模塊的實(shí)現(xiàn)</p><p>  4.2.4.1記錄用戶登陸郵箱、密碼、所選SMT

121、P服務(wù)器和POP服務(wù)器</p><p>  記錄用戶登陸郵箱、密碼、所選SMTP服務(wù)器和POP服務(wù)器的實(shí)現(xiàn)代碼如下:</p><p>  public class personalMessage</p><p><b>  {</b></p><p>  private static string _userMail;&

122、lt;/p><p>  private static string _password;</p><p>  private static string _smtpServer;</p><p>  private static string _popServer;</p><p>  public personalMessage(string

123、userMail, string password, string smtpServer, string popServer)</p><p><b>  {</b></p><p>  _userMail = userMail;</p><p>  _password = password;</p><p>  _sm

124、tpServer = smtpServer;</p><p>  _popServer = popServer;</p><p><b>  }</b></p><p>  public personalMessage() { }</p><p>  public static string getUserMail<

125、;/p><p><b>  {</b></p><p><b>  get</b></p><p><b>  {</b></p><p>  return _userMail;</p><p><b>  }</b></p>

126、;<p><b>  }</b></p><p>  public static string getPassword</p><p><b>  {</b></p><p><b>  get</b></p><p><b>  {</b>

127、</p><p>  return _password;</p><p><b>  }</b></p><p><b>  }</b></p><p>  public static string getSmptServer</p><p><b>  {<

128、/b></p><p><b>  get</b></p><p><b>  {</b></p><p>  return _smtpServer;</p><p><b>  }</b></p><p><b>  }</b&g

129、t;</p><p>  public static string getPopServer</p><p><b>  {</b></p><p><b>  get</b></p><p><b>  {</b></p><p>  return _

130、popServer;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  4.3 本章小結(jié)</b></p><p>  我們使用微軟提供

131、的大量的公共類,以及第三方郵箱操作組件jmail提供的接口,來實(shí)現(xiàn)用戶郵件代理。在實(shí)現(xiàn)過程中我們小組對郵箱的整個運(yùn)作流程和各種協(xié)議有了更深層次的理解。</p><p>  第五章 測試及成果展示</p><p><b>  5.1 測試環(huán)境</b></p><p><b>  Windows7</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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論