




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、VC+程序設計報告電子郵件發送和接收程序的開發班級:B電子051姓名:周慶學號:0510620118指導老師:惠為君日期:2007年7月目錄第一章需求分析 21.1 開發背景 21.2 功能要求 2第二章系統總體分析 21.1、.電子郵件介紹 21.2、.總體設計方案及思路 31、電子郵件的發送程序 31、電子郵件的接收程序 41.3、.模塊分析 41、電子郵件發送程序的主要模塊 51、電子郵件接收程序的主要模塊 5第三章程序的測試(運行截圖)5爀椀愀氀.添加“關于”標簽的測試 5爀椀愀氀.發送郵件的測試 6爀椀愀氀.收取郵件的測試 8第四章設計總結 8課程小結 8個人小結 9附錄(源代碼)9
2、“關于”標簽的程序代碼 92 電子郵件發送程序的代碼 103 附件的代碼 133 電子郵件接受程序的代碼 14第一章、需求分析開發背景隨著互聯網的不斷發展,越來越多的企業單位通過電子郵件來協同工作,打破時間與地域的限制,大大提高了工作效率。電子郵件已地經成為人們生活中不可缺少的一部分。但是,當前流行的各大郵件客戶端軟件除了最主要的收發信件之外,功能越來越復雜,但是人們平常真正用到的功能很少,很多功能尤其對于那些計算機知識相對缺乏的人來說,更加顯得太過于華麗而不實用。所以這次的VC+課程設計,我選擇了制作一個操作簡單,又可以實現最基本的電子郵件的收發功能的工具。功能要求基本發送和接受郵件的功能。
3、實現通信功能。具有簡單、實用、易操作的圖形界面。在以上基礎上盡量實現發送附件的功能。程序還應可以判斷整個過程是否能正常運行,如果不正常運行,必須給出錯誤信息。第二章、系統總體分析電子郵件介紹電子郵件又稱E-mai1,是一種用電子手段提供信息交換的通信方式。它是全球多種網絡上使用最普遍的一項服務。這種非交互式的通信,加速了信息的交流及數據傳送,它是一個簡易、快速的方法。通過連接全世界的Internet,實現各類信號的傳送、接收、存貯等處理,將郵件送到世界的各個角落。到目前為止,可以說電子郵件是Internet資源使用最多的一種服務,E-mai1不只局限于信件的傳遞,還可用來傳遞文件、聲音及圖形、
4、圖像等不同類型的信息。電子郵件的處理由兩大部分組成:電子郵件發送程序和電子郵件接收程序。電子郵件發送程序的發送方式有兩種:第一種是本地計算機與用戶所指定的發送郵件服務器連接,然后通過發送郵件服務器將郵件傳遞到接收郵件服務器,郵件中包含有信件的主題和內容等一系列信息;第二種是本地計算機直接與接收電子郵件的服務器相連,并將郵件送入收件者的郵箱中。電子郵件接收程序則只需要處理本地計算機與存放電子郵件的服務器相連接,并通過帳號和口令從服務器中獲取電子郵件,郵件中包含有信件的主題、內容和發送時間等??傮w設計方案及思路(1)電子郵件的發送程序發送郵件的程序必須能夠做3件事情:與接收電子郵件的服務器相連接;
5、將相關的信息送入收件人的信箱;程序還應可以判斷整個過程是否能正常運行,如果不正常運行,必須給出錯誤信息。一般情況下,在VC+中,電子郵件程序的編寫是利用Windows自帶的MAPI以及相關的通信協議SMPT/POP算來實現的。(1是要利用MAPI和通信協議實現一個功能強大的電子郵件管理程序,需要很強的相關專業知識。隨著現代軟件業的發展,軟件廠商提供了方便、簡易,與服務器無關且穩定的電子郵件處理組件,使我們可以在程序開發語言中調用這些組件,利用很簡單的語言實現功能強大的程序。JMail組件就是一個很好用的電子郵件程序開發第三方組件。所以這次的課程設計我選擇了JMa11組件。JMail組件中包含許
6、多實現電子郵件處理的屬性和方法。只需要在VC+弋碼中創建一個JMail組件的對象,調用其中的某些功能,就能很快完成程序的開發。JMail常用的發送郵件的基本屬性和方法如表1所示。表 1JMail 常用發送郵件的基本屬性和方法方法和屬性功能Body郵件內容Charset字符集,默認為“US-ASCII”Sendname發送人姓名Sender發送人郵箱地址ServeraddressSMPT!艮務器地址,可制定多個,用分號分開,并可指定端口;為空白時,JMail會嘗試解決遠程郵件服務器,然后直接發送。Subject標題Priority優先級(1:高優先級;3:普通優先級;5:低優先級)AddAtta
7、chment(afilename”,ContentType)添加文件附件AddCustomAttachment(afilename”,data)添加自定義附件AddURLAttachment(bstrURL”,“bstrAttachAS,bstrAuth)下載并添加一個來自bstrURL的附件,BstrAttachAS指定受到信件的文件名。AddRecipient(Email-Address)增加一個收件人AddRecipientEX(Email-Address”,aname)增加一個帶名字的收件人AppendBodyFromFile(afilename)將一個文件追加到正文后AppendTe
8、xt(Text)追加信的正文內容Execute()方法執行發送Close()方法強制JMail關閉緩沖與郵件服務器的連接由于JMail是第三方組件,因此VC+理序要想調用JMail對象,就必須先下載JMail動態鏈接庫,并在本機中進行注冊。具體操作方法如下:打開運行對話框,輸入cma打開命令提示符編輯器,輸入如下指令即可注冊成功:jmail.dll(2)電子郵件的接收程序接收郵件的程序必須能夠做三件事:與存放電子郵件的服務器相連接;讀取相關的信件信息,并存放與本地計算機中;程序還將判斷整個過程是否能正常運行,如果不正常運行,必須給出錯誤信息。與電子郵件發送程序的編寫相同,我還是采取VC+相言和
9、JMail組件相結合的方法來實現郵件的收取。JMail常用的接收郵件的基本屬性和方法如表2所示。表 2JMail 常用接收信件的基本屬性和方法方法和屬性功能Body郵件內容Charset字符集,默認為(US-ASCII)Date信件發送日期MailServer郵箱所在的服務器Subject標題Timeout連接服務器的超時限制Connect。連接服務器,需要參數:帳號、口令、服務器地址、端口模塊分析電子子郵件接受方式程序主要由以下兩個大的模塊構成:發送郵件模塊和收取郵件模塊。其功能*II塊如圖1所示:圖 1 電子郵件功能模塊圖(JMail組件的安裝路徑)regsvr32(1)電子郵件發送程序的
10、主要模塊電子郵件發送程序主要由以下幾個模塊組成:郵件服務器:用于填寫收件人的郵箱服務器(可以不填);收件人信箱:用于填寫收件人的郵箱名;發件人信箱:用于填寫發件人的郵箱名;主題:用于填寫信件主題;正文:用于寫入信件正文;退出:用于退出發件程序;發送:用于發送郵件;關于:用于顯示軟件開發的相關信息。附件:可以手動添加附件并完成發送(該功能正在進一步完善中)(為本小組另行添加的功能)(2)電子郵件接收程序的主要模塊電子郵件接收程序主要由以下幾個模塊組成:郵件服務器:用于填寫需要收取信件信箱的服務器;帳號:用于填寫需要收取信件的郵箱帳號;口令:用于填寫需要收取信件的郵箱密碼;郵件列表:顯示郵箱中所有
11、郵件的列表;正文:當選中郵件列表中任一郵件時,顯示該封信件的具體內容;退出:用于退出接收郵件程序;收取:用于收取信件。第三章、程序測試(運行截圖)3.1、添加“關于”標簽的測試在原設計的基礎上我添加了一個“關于”的標簽, 點擊該按鈕會彈出一個小的對話框,其中的內容包括本小組的成員、程序開發時間以及一些關于郵件方面的相關幫助信息。的運行結果如圖1所示。程序圖 2“關于”程序主界面3.2、發送郵件的測試圖 3 郵件發送主界面(不帶附件)圖 4 發送郵件程序主界面(加載附件)圖 5 發送郵件程序主界面(帶附件)3.3、收取郵件的測試圖 6 收取電子郵件程序主界面第四章、設計總結課程小結在郵件發送程序
12、中,用戶可以利用SMPT!艮務器向朋友發送電子郵件,也可以直接嘗試鏈接朋友的E-mail信箱所在的服務器。這次課程設計我所利用的JMail組件封裝了很強的電子郵件處理功能,如附件傳遞、用戶的跟蹤服務、發布產品信息,以及電子報刊處理等功能。在郵件接受程序中,用戶可以向POP3服務器收取電子郵件。用戶打開郵箱后,將利用JMail組件創建的對象指針遍歷郵箱中的所有郵件,并將郵件信息下載存放于本地計算機中,利用List控件的擴展屬性顯示郵件的正文內容。目前我所做的這個程序還不夠完整,還存在著很多的不足和不完善的地方。歸納起來體現在以下幾個方面:軟件的功能趨于簡單,真正的郵件收發工具軟件包括很多方面的信
13、息,而不僅僅局限于發送郵件和收取郵件。真正的郵件服務軟件還包括郵件導入、郵件導出、文本編輯(查找與撤消)、通訊簿、通訊規則等等功能。軟件的圖形操作功能缺乏,目前系統中對郵件附件的添加、刪除功能都沒有圖形快捷操作,只能通過改變源程序中的代碼達到添加附件的目的。而且由于時間和知識的欠缺,整個系統的界面顯得過于單調,缺乏動態顯示效果。如果能結合其它界面美化工具,使得界面更人性化,那就更好了。個人小結經過不懈的努力,終于完成了這次的課程設計。其實在做這次VC+唯序設計實驗之前,我基本上沒有真正意義上的接觸過VC+和序案例的設計和開發,只是通過課堂了解了一些關于VC+制最基本的知識,所以這次實驗是在邊學
14、習邊實踐的基礎上完成的。由于知識的不足,做的結果自己不是很滿意,與自己原來的設想也有些差距。但是我也從這兩個星期的設計和制作過程中學到了很多知識,對自己以后的專業學習甚至將來的工作都有很大的幫助。附錄(源代碼):1、“關于”標簽的程序代碼(1)往頭文件StdAfx.h中添加下列代碼:#defineCRLFx0dx0a/注意這兩行必須添加#defineCRLF2CRLFCRLF(2)主要代碼如下:BOOLCAboutDlg:OnInitDialog()CDialog:OnInitDialog();/TODO:Addextrainitializationherem_strEditHelp=相關幫助
15、信息:CRLFCRLF一、發送郵件服務器和發信人信箱有密切關系,假如你的信箱為,則發送郵件服務器一般為:,當然這也不是絕對的,你可以到你的郵件相關網站查詢。不知道服務器名的話也可以不填!CRLFCRLF二、發信信箱格式比較靈活,如下兩種格式均為合法的:1在你的E-Mail首尾加小于大于符號:2直接填寫你的E-Mail:CRLFCRLF三、接受信箱可以為多個,中間用分號;隔開,例如:Pookie;snuggles;某些信箱前面的部分字符串是收信人名稱,例如上面的Pookie可以省略不寫,例如下面一行和上面一行是等價的,它們都是可以接受的信箱輸入格式。;CRLFCRLF四、郵件主題,當然就是郵件的
16、標題了,你可以隨意輸入自己喜愛的標題。CRLFCRLF五、郵件正文就是你要發給對方的信息。CRLFCRLF六、最后不得不提一下,由于當今好多發送郵件服務器都要求身份驗證,也就是需要提供的你的信箱密碼,鑒于技術問題,這類信箱本程序暫時不支持。CRLFCRLF周清周慶蒯志剛于雯CRLF2007年7月CRLF;UpdateData(FALSE);/UpdatetheDialogreturnTRUE;/returnTRUEunlessyousetthefocustoacontrol/EXCEPTION:OCXPropertyPagesshouldreturnFALSE2、發送郵件程序代碼:(1)往頭文
17、件StdAfx.h中添加JMail對象的聲明,這樣才能在整個程序中應用JMail對象.代碼如下:#importC:jmailjmail.dll/顯示指定JMail動態鏈接庫usingnamespacejmail;/定義程序中JMail對象的名稱(2)頭文件MailServer.h,利用ClassWizard類項導添加退出應用程序的函數ExitInstnace().源代碼如下:/Overrides/ClassWizardgeneratedvirtualfunctionoverrides/AFX_VIRTUAL(CMailServerApp)public:virtualBOOLInitInstan
18、ce();virtualintExitInstance();AFX_VIRTUAL(3)源文件MailServer.cpp,類CMailServerApp的實現文件.1)由于程序中應用了JMail組件,因此必須在InitInstance()函數中添加如下代碼,進行應用程序的初始化.BOOLCMailServerApp:InitInstance()AfXEnableControlContainer();:CoInitialize(NULL);#ifdef_AFXDLLEnable3dControls();/CallthiswhenusingMFCinasharedDLL,2)應用程序時,在Exi
19、tInstance()函數中添加釋放各變量的代碼/應用程序退出時intCMailServerApp:ExitInstance()/TODO:Addyourspecializedcodehereand/orcallthebaseclassreturnCWinApp:ExitInstance();:CoUninitialize();MailServerDlg.h中,CMailServerDlg類的接口.1)在頭文件MailServerDlg.h中,添加各控件的控件變量,如下表所示控件控件變量IDC_EDIT_MAILSERVERm_strmailserverIDC_EDIT_RECIPIENTSm
20、_strrecipientsIDC_EDIT_SENDERm_strsenderIDC_EDIT_SUBJECTm_strsubjectIDC_EDIT_BODYm_strbody2)利用ClassWizard添加IDOK控件的ON_BN_CLICKED件函數,代碼如下:Protected:AFX_MSG(CMailServerDlg),Afx_msgvoidOnSend();/AFX_MSG,3)源文件MailServerDlg.cpp,類CMailServerDlg的實現文件.打開MailServerDlg.cpp文件,添加發送郵件函數OnSend()的代碼如下:/發送郵件程序voidCM
21、ailServerDlg:OnSend()/TODO:AddyourcontrolnotificationhandlercodehereUpdateData();/獲取Edit控件中的字符串m_strmailserver.TrimLeft();m_strmailserver.TrimRight();m_strrecipients.TrimLeft();m_strrecipients.TrimRight();m_strsender.TrimLeft();m_strsender.TrimRight();/判斷Edit控件中的字符串是否有效if(m_strrecipients.GetLength()
22、3)AfxMessageBox(請填寫正確的收件人信箱);return;if(m_strsender.GetLength()From=(LPCTSTR)m_strsender;/發件人姓名pMessage-FromName=,我的名字;/添加收件人pMessage-AddRecipient(LPCTSTR)m_strrecipients,);/優先級設置,15逐次降低,3為中級pMessage-Priority=3;/編碼方式設置,默認是iso-8859-1pMessage-Charset=GB2312;/主題pMessage-Subject=(LPCTSTR)m_strsubject;/正文
23、pMessage-Body=(LPCTSTR)m_strbody;/開始發送pMessage-Send(LPCTSTR)m_strmailserver,VARIANT_FALSE);pMessage.Release();AfxMessageBox(發送成功!);/捕捉異常catch(_com_errore)CStringstrErr;strErr.Format(錯誤信息:%srn錯誤描(LPCTSTR)e.ErrorMessage(),(LPCTSTR)e.Description();AfxMessageBox(strErr);3、附件實現的代碼:附件發送的實現;(1)首先在CMailServ
24、erDld類中定義幾個對象。public:CStringstr;CStringtr;BOOLstrbool;_bstr_tbstr;(2)加載文件:voidCMailServerDlg:OnBtAddfile()/TODO:AddyourcontrolnotificationhandlercodehereCFileDialogcg(TRUE);if(cg.DoModal()=IDOK)strbool=true;elsestrbool=false;cg.DoModal();str=cg.GetPathName();MessageBox(str);(3)發送附件:bstr=str.AllocSys
25、String();/CString類型轉換成_bstr_t類型if(strbool=true)/判斷有沒有打開附件_bstr_tbstrCID=pMessage-AddAttachment(bstr,);/開始發送(帶附件)pMessage-Send(LPCTSTR)m_strmailserver,VARIANT_FALSE);pMessage.Release();AfxMessageBox(發送成功(帶附件)!);else/開始發送(不帶附件)pMessage-Send(LPCTSTR)m_strmailserver,VARIANT_FALSE);pMessage.Release();Afx
26、MessageBox(發送成功(不帶附件)!);述:%sVARIANT_TRUE,/捕捉異常catch(_com_errore)CStringstrErr;strErr.Format(錯誤信息:srn錯誤描述:%s,(LPCTSTR)e.ErrorMessage(),(LPCTSTR)e.Description();AfxMessageBox(strErr);4、接受郵件程序代碼:(1)往頭文件StdAfx.h中添加JMail對象的聲明,這樣才能在整個程序中應用JMail對象.代碼如下:/顯示指定JMail動態鏈接庫#importC:jmailjmail.dll/定義程序中JMail對象的名稱
27、usingnamespacejmail;(2)頭文件MailServer.h,利用ClassWizard類項導添加退出應用程序的函數ExitInstnace().源代碼如下:/Overrides/ClassWizardgeneratedvirtualfunctionoverrides/AFX_VIRTUAL(CMailServerApp)public:virtualBOOLInitInstance();virtualintExitInstance();/AFX_VIRTUAL(3)源文件MailRecieve.cpp,類CMailRecieveApp的實現文件.1)由于程序中應用了JMail組
28、件,因此必須在InitInstance()函數中添加如下代碼,進行應用程序的初始化.BOOLCMailRevieveApp:InitInstance()AfxEnableControlContainer();:CoInitialize(NULL);#ifdef_AFXDLLEnable3dControls();/CallthiswhenusingMFCinasharedDLL,2)應用程序時,在ExitInstance()函數中添加釋放各變量的代碼/應用程序退出時intCMailRecieveApp:ExitInstance()(/TODO:Addyourspecializedcodehere
29、and/orcallthebaseclassreturnCWinApp:ExitInstance();:CoUninitialize();(4)MailRecieveDlg.h中,CMailRecieveDlg類的接口.1)在頭文件MailRecieveDlg.h中,添加各控件的控件變量,如下表所示控件控件變量IDC_EDIT_MAILSERVERm_strmailserverIDC_EDIT_MESSAGESm_strcltmessageslistIDC_EDIT_PASSWORDm_strpasswordIDC_EDIT_USERIDm_struseridIDC_EDIT_BODYm_st
30、rbody2)利用ClassWizard添加IDOK控件的ON_BN_CLICKEDT件函數, 添加List控件的LVN_ITEMCHANGE件函數.代碼如下:Protected:AFX_MSG(CMailServerDlg)Afx_msgvoidOnRecieve();afx_msgvoidOnShowBody(NMHDR*Pnmhdr,lresult*pResult);AFX_MSG3)源文件MailRecieverDlg.cpp,類CMailRecieveDlg的實現文件.向MailServerDlg.cpp文件中添加初始化對話框函數OnInitDialog()的代碼、OnRecieve
31、()的代碼和顯示郵件正文函數OnShowBody()的代碼:BOOLCMailRecieveDlg:OnInitDialog()/TODO:Addextrainitializationhere/初始化對話框的函數/升級列表控件:SendMessage(m_ctlmessagelist.m_hWnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT,LVS_EX_FULLROWSELECT);/顯示控件列表returnTRUE;/returnTRUEunlessyousetthefocustoacontrol:/接收郵件函數voidCMailRe
32、cieveDlg二OnRecieve()(m_ctlmessagelist.InsertColumn(0,m_ctlmessagelist.InsertColumn(1,m_ctlmessagelist.InsertColumn(2,發件人”,LVCFMT_LEFT,120);主題”,LVCFMT_LEFT,350);日期”,LVCFMT_LEFT,100);/TODO:Addyourcontrolnotificationhandlercodehere/接受郵件的函數UpdateData();/格式化Edit控件中的字符串m_strmailserver.TrimLeft();m_strmail
33、server.TrimRight();m_struserid.TrimLeft();m_struserid.TrimRight();m_strpassword.TrimLeft();m_strpassword.TrimRight();/判斷帳號口令是否存在if(m_strmailserver.GetLength()=0)(AfxMessageBox(郵件服務器不能為空);return;if(m_struserid.GetLength()Timeout=30;/鏈接郵件服務器,110為POP3t認端口號pPOP3-Connect(LPCTSTR)m_struserid,(LPCTSTR)m_strpassword(LPCTSTR)m_strmailserver,110);/獲取信件pMessages=pPOP3-Messages;/已下載的郵件的實際個數(因為第0個ITEM是未用的,所以減一)longlCount=(pPOP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年域名購買合同范本
- 水壩轉讓合同協議書
- 景觀照明合同協議書
- 油茶合作合同協議書
- 無償贈予合同協議書
- 打樁地基合同協議書
- 洽談合同互賠協議書
- 漁船船舶出售協議書
- 海通股份認購協議書
- 村民矛盾處理協議書
- 醫院感染與醫療質量管理
- 微信公眾號運營協議
- 《公司法》知識學習考試題庫150題(含答案)
- 新農村太陽能路燈照明設計方案
- 計算機網絡安全畢業答辯
- 帶貨主播經紀合同范本3篇
- 江蘇省鹽城市阜寧縣多校2024-2025學年九年級上學期12月月考語文試題含答案
- 燃氣管道項目審計要點
- 外科學(2)知到智慧樹章節測試課后答案2024年秋溫州醫科大學
- 中醫考試題+答案
- (高級)數據安全管理員職業技能鑒定考試題庫-實操題
評論
0/150
提交評論