電子郵件發(fā)送和接收程序的開發(fā)設(shè)計和實現(xiàn) 計算機科學與技術(shù)專業(yè)_第1頁
電子郵件發(fā)送和接收程序的開發(fā)設(shè)計和實現(xiàn) 計算機科學與技術(shù)專業(yè)_第2頁
電子郵件發(fā)送和接收程序的開發(fā)設(shè)計和實現(xiàn) 計算機科學與技術(shù)專業(yè)_第3頁
電子郵件發(fā)送和接收程序的開發(fā)設(shè)計和實現(xiàn) 計算機科學與技術(shù)專業(yè)_第4頁
電子郵件發(fā)送和接收程序的開發(fā)設(shè)計和實現(xiàn) 計算機科學與技術(shù)專業(yè)_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目錄TOC\o"1-3"\h\zHYPERLINK1.2功能要求 2HYPERLINK2.1電子郵件介紹 2HYPERLINK2.2.1電子郵件的發(fā)送程序 3HYPERLINK2.3模塊分析 4HYPERLINK2.3.2電子郵件接收程序的主要模塊 5HYPERLINK3.1添加“關(guān)于”標簽的測試 5HYPERLINK3.3收取郵件的測試 8HYPERLINK4.1課程小結(jié) 8HYPERLINK附錄(源代碼) 9HYPERLINK2電子郵件發(fā)送程序的代碼 10HYPERLINK//注意這兩行必須添加#defineCRLF2CRLFCRLF(2)主要代碼如下:BOOLCAboutDlg::OnInitDialog(){ CDialog::OnInitDialog(); //TODO:Addextrainitializationhere m_strEditHelp="相關(guān)幫助信息:" CRLF CRLF"一、發(fā)送郵件服務器和發(fā)信人信箱有密切關(guān)系,假如你的信箱為loop@,則發(fā)送郵件服務器一般為:,當然這也不是絕對的,你可以到你的郵件相關(guān)網(wǎng)站查詢。不知道服務器名的話也可以不填!"CRLF CRLF "二、發(fā)信信箱格式比較靈活,如下兩種格式均為合法的:1在你的E-Mail首尾加小于大于符號:<loomman@>2直接填寫你的E-Mail:loomman@"CRLF CRLF"三、接受信箱可以為多個,中間用分號;隔開,例如:Pookie<pookie@>;snuggles<snuggles@>;<loomman@>某些信箱前面的部分字符串是收信人名稱,例如上面的Pookie可以省略不寫,例如下面一行和上面一行是等價的,它們都是可以接受的信箱輸入格式。<pookie@>;<snuggles@>;<loomman@>"CRLF CRLF"四、郵件主題,當然就是郵件的標題了,你可以隨意輸入自己喜愛的標題。" CRLFCRLF"五、郵件正文就是你要發(fā)給對方的信息。"CRLF CRLF"六、最后不得不提一下,由于當今好多發(fā)送郵件服務器都要求身份驗證,也就是需要提供的你的信箱密碼,鑒于技術(shù)問題,這類信箱本程序暫時不支持。"CRLF CRLF "周清周慶蒯志剛于雯" CRLF "2007年7月"CRLF;UpdateData(FALSE);//UpdatetheDialog returnTRUE;//returnTRUEunlessyousetthefocustoacontrol //EXCEPTION:OCXPropertyPagesshouldreturnFALSE}2、發(fā)送郵件程序代碼:(1)往頭文件StdAfx.h中添加JMail對象的聲明,這樣才能在整個程序中應用JMail對象.代碼如下:#import"C:\jmail\jmail.dll"http://顯示指定JMail動態(tài)鏈接庫usingnamespacejmail;//定義程序中JMail對象的名稱(2)頭文件MailServer.h,利用ClassWizard類項導添加退出應用程序的函數(shù)ExitInstnace().源代碼如下://Overrides //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CMailServerApp) public: virtualBOOLInitInstance(); virtualintExitInstance(); //}}AFX_VIRTUAL(3)源文件MailServer.cpp,類CMailServerApp的實現(xiàn)文件.1)由于程序中應用了JMail組件,因此必須在InitInstance()函數(shù)中添加如下代碼,進行應用程序的初始化.BOOLCMailServerApp::InitInstance(){ AfxEnableControlContainer(); ::CoInitialize(NULL);#ifdef_AFXDLL Enable3dControls(); //CallthiswhenusingMFCinasharedDLL……}2)應用程序時,在ExitInstance()函數(shù)中添加釋放各變量的代碼.//應用程序退出時intCMailServerApp::ExitInstance(){ //TODO:Addyourspecializedcodehereand/orcallthebaseclass returnCWinApp::ExitInstance(); ::CoUninitialize();}(4)MailServerDlg.h中,CMailServerDlg類的接口.1)在頭文件MailServerDlg.h中,添加各控件的控件變量,如下表所示.控件控件變量IDC_EDIT_MAILSERVERm_strmailserverIDC_EDIT_RECIPIENTSm_strrecipientsIDC_EDIT_SENDERm_strsenderIDC_EDIT_SUBJECTm_strsubjectIDC_EDIT_BODYm_strbody2)利用ClassWizard添加IDOK控件的ON_BN_CLICKED事件函數(shù),代碼如下:Protected://{{AFX_MSG(CMailServerDlg)……Afx_msgvoidOnSend();//}}AFX_MSG……3)源文件MailServerDlg.cpp,類CMailServerDlg的實現(xiàn)文件.打開MailServerDlg.cpp文件,添加發(fā)送郵件函數(shù)OnSend()的代碼如下://發(fā)送郵件程序voidCMailServerDlg::OnSend(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); //獲取Edit控件中的字符串 m_strmailserver.TrimLeft(); m_strmailserver.TrimRight(); m_strrecipients.TrimLeft();m_strrecipients.TrimRight(); m_strsender.TrimLeft();m_strsender.TrimRight(); //判斷Edit控件中的字符串是否有效if(m_strrecipients.GetLength()<3) { AfxMessageBox("請?zhí)顚懻_的收件人信箱"); return; } if(m_strsender.GetLength()<=0) { AfxMessageBox("請?zhí)顚懓l(fā)件人郵箱"); return; } //發(fā)送郵件過程 try { //創(chuàng)建一個JMail對象,這樣便可以利用其內(nèi)容封裝的基本屬性和方法 jmail::IMessagePtrpMessage("JMail.Message"); //發(fā)件人郵箱 pMessage->From=(LPCTSTR)m_strsender; //發(fā)件人姓名 pMessage->FromName="我的名字"; //添加收件人 pMessage->AddRecipient((LPCTSTR)m_strrecipients,"",""); //優(yōu)先級設(shè)置,1~5逐次降低,3為中級 pMessage->Priority=3; //編碼方式設(shè)置,默認是iso-8859-1 pMessage->Charset="GB2312"; //主題 pMessage->Subject=(LPCTSTR)m_strsubject; //正文 pMessage->Body=(LPCTSTR)m_strbody; //開始發(fā)送 pMessage->Send((LPCTSTR)m_strmailserver,VARIANT_FALSE);pMessage.Release(); AfxMessageBox("發(fā)送成功!"); } //捕捉異常 catch(_com_errore) { CStringstrErr; strErr.Format("錯誤信息:%s\r\n錯誤描述:%s",(LPCTSTR)e.ErrorMessage(),(LPCTSTR)e.Description());AfxMessageBox(strErr); }}3、附件實現(xiàn)的代碼:附件發(fā)送的實現(xiàn);(1)首先在CMailServerDld類中定義幾個對象。public:CStringstr;CStringtr;BOOLstrbool;_bstr_tbstr;(2)加載文件:voidCMailServerDlg::OnBtAddfile(){ //TODO:Addyourcontrolnotificationhandlercodehere CFileDialogcg(TRUE); if(cg.DoModal()==IDOK)strbool=true;elsestrbool=false; cg.DoModal();str=cg.GetPathName(); MessageBox(str);}(3)發(fā)送附件: bstr=str.AllocSysString();//CString類型轉(zhuǎn)換成_bstr_t類型 if(strbool==true)//判斷有沒有打開附件 {_bstr_tbstrCID=pMessage->AddAttachment(bstr,VARIANT_TRUE,"");//開始發(fā)送(帶附件) pMessage->Send((LPCTSTR)m_strmailserver,VARIANT_FALSE);pMessage.Release(); AfxMessageBox("發(fā)送成功(帶附件)!"); } else { //開始發(fā)送(不帶附件) pMessage->Send((LPCTSTR)m_strmailserver,VARIANT_FALSE);pMessage.Release(); AfxMessageBox("發(fā)送成功(不帶附件)!"); }//捕捉異常 catch(_com_errore) { CStringstrErr; strErr.Format("錯誤信息:%s\r\n錯誤描述:%s",(LPCTSTR)e.ErrorMessage(),(LPCTSTR)e.Description());AfxMessageBox(strErr); }4、接受郵件程序代碼:(1)往頭文件StdAfx.h中添加JMail對象的聲明,這樣才能在整個程序中應用JMail對象.代碼如下://顯示指定JMail動態(tài)鏈接庫#import"C:\jmail\jmail.dll"http://定義程序中JMail對象的名稱usingnamespacejmail;(2)頭文件MailServer.h,利用ClassWizard類項導添加退出應用程序的函數(shù)ExitInstnace().源代碼如下://Overrides //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CMailServerApp) public: virtualBOOLInitInstance(); virtualintExitInstance(); //}}AFX_VIRTUAL(3)源文件MailRecieve.cpp,類CMailRecieveApp的實現(xiàn)文件.1)由于程序中應用了JMail組件,因此必須在InitInstance()函數(shù)中添加如下代碼,進行應用程序的初始化.BOOLCMailRevieveApp::InitInstance(){ AfxEnableControlContainer(); ::CoInitialize(NULL);#ifdef_AFXDLL Enable3dControls(); //CallthiswhenusingMFCinasharedDLL……}2)應用程序時,在ExitInstance()函數(shù)中添加釋放各變量的代碼.//應用程序退出時intCMailRecieveApp::ExitInstance(){ //TODO:Addyourspecializedcodehereand/orcallthebaseclass returnCWinApp::ExitInstance(); ::CoUninitialize();}(4)MailRecieveDlg.h中,CMailRecieveDlg類的接口.1)在頭文件MailRecieveDlg.h中,添加各控件的控件變量,如下表所示.控件控件變量IDC_EDIT_MAILSERVERm_strmailserverIDC_EDIT_MESSAGESm_strcltmessageslistIDC_EDIT_PASSWORDm_strpasswordIDC_EDIT_USERIDm_struseridIDC_EDIT_BODYm_strbody2)利用ClassWizard添加IDOK控件的ON_BN_CLICKED事件函數(shù),添加List控件的LVN_ITEMCHANGE事件函數(shù).代碼如下:Protected://{{AFX_MSG(CMailServerDlg)……Afx_msgvoidOnRecieve();afx_msgvoidOnShowBody(NMHDR*Pnmhdr,lresult*pResult);//}}AFX_MSG……3)源文件MailRecieverDlg.cpp,類CMailRecieveDlg的實現(xiàn)文件.向MailServerDlg.cpp文件中添加初始化對話框函數(shù)OnInitDialog()的代碼、OnRecieve()的代碼和顯示郵件正文函數(shù)OnShowBody()的代碼:BOOLCMailRecieveDlg::OnInitDialog(){……//TODO:Addextrainitializationhere//初始化對話框的函數(shù) //升級列表控件 ::SendMessage(m_ctlmessagelist.m_hWnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT,LVS_EX_FULLROWSELECT); //顯示控件列表 m_ctlmessagelist.InsertColumn(0,"發(fā)件人",LVCFMT_LEFT,120); m_ctlmessagelist.InsertColumn(1,"主題",LVCFMT_LEFT,350); m_ctlmessagelist.InsertColumn(2,"日期",LVCFMT_LEFT,100); returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}://接收郵件函數(shù)voidCMailRecieveDlg::OnRecieve(){ //TODO:Addyourcontrolnotificationhandlercodehere//接受郵件的函數(shù) UpdateData(); //格式化Edit控件中的字符串m_strmailserver.TrimLeft(); m_strmailserver.TrimRight(); m_struserid.TrimLeft(); m_struserid.TrimRight(); m_strpassword.TrimLeft(); m_strpassword.TrimRight(); //判斷帳號口令是否存在 if(m_strmailserver.GetLength()<=0) { AfxMessageBox("郵件服務器不能為空"); return; } if(m_struserid.GetLength()<=0) {AfxMessageBox("帳號不能為空"); return; } //清空List控件列表 m_ctlmessagelist.DeleteAllItems(); //清空存放郵件正文的數(shù)組m_strBodyArray.RemoveAll(); //接受郵件 try { //創(chuàng)建新的JMail對象 jmail::IPOP3PtrpPOP3("JMail.POP3"); jmail::IMessagePtrpMessages; //設(shè)置鏈接服務器超時限制30s pPOP3->Timeout=30; //鏈接郵件服務器,110為POP3默認端口號 pPOP3->Connect((LPCTSTR)m_struserid,(LPCTSTR)m_strpassword,(LPCTSTR)m_strmailserver,110);//獲取信件 pMessages=pPOP3->Messages; //已下載的郵件的實際個數(shù)(因為第0個ITEM是未用的,所以減一) longlCount=(pPOP3->Messages)->Count-1; if(lCount==0) AfxMessageBox("信箱為空"); else { jmail::IMessagePtrpMessage; //遍歷每 for(longi=1;i<=lCount;i++) { pMessage=(pPOP3->Messages)->Item[i]; //信件的具體信息 _bstr_tbstrFrom=pMessage->From;_bstr_tbstrSubject=pMessage->Subject; _bstr_tbstrBody=pMessage->Body; COleDateTimeoleDate=pMessage->Date; //向List空間中添加信件信息 intnListItem=m_ctlmessagelist.InsertItem(i,(constchar*)bstrFrom

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論