VC++收發(fā)電子郵件的開發(fā).doc_第1頁
VC++收發(fā)電子郵件的開發(fā).doc_第2頁
VC++收發(fā)電子郵件的開發(fā).doc_第3頁
VC++收發(fā)電子郵件的開發(fā).doc_第4頁
VC++收發(fā)電子郵件的開發(fā).doc_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

程序設(shè)計(jì)報(bào)告 程序設(shè)計(jì)報(bào)告 電子郵件發(fā)送和接收程序 的開發(fā) 班班 級(jí) 級(jí) 電子 電子 姓姓 名 名 周周 慶慶 學(xué)學(xué) 號(hào) 號(hào) 指導(dǎo)老師 指導(dǎo)老師 惠惠 為為 君君 日日 期 期 20072007 年年 7 7 月月 VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 1 頁 目目 錄錄 第一章第一章 需需求求分分析析 2 2 1 1 開發(fā)背景 2 1 2 功能要求 2 第二章第二章 系統(tǒng)總體分析系統(tǒng)總體分析 2 2 2 1 電子郵件介紹 2 2 2 總體設(shè)計(jì)方案及思路 3 2 2 1 電子郵件的發(fā)送程序 3 2 2 2 電子郵件的接收程序 4 2 3 模塊分析 4 2 3 1 電子郵件發(fā)送程序的主要模塊 5 2 3 2 電子郵件接收程序的主要模塊 5 第三章第三章 程序的測(cè)試 運(yùn)行截圖 程序的測(cè)試 運(yùn)行截圖 5 5 3 1 添加 關(guān)于 標(biāo)簽的測(cè)試 5 3 2 發(fā)送郵件的測(cè)試 6 3 3 收取郵件的測(cè)試 8 第四章第四章 設(shè)設(shè)計(jì)計(jì)總結(jié)總結(jié) 8 4 1 課程小結(jié) 8 4 2 個(gè)人小結(jié) 9 附錄附錄 源代碼 源代碼 9 1 關(guān)于 標(biāo)簽的程序代碼 9 2 電子郵件發(fā)送程序的代碼 10 3 附件的代碼 13 3 電子郵件接受程序的代碼 14 VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 2 頁 第一章 需求分析第一章 需求分析 1 11 1 開發(fā)背景 開發(fā)背景 隨著互聯(lián)網(wǎng)的不斷發(fā)展 越來越多的企業(yè)單位通過電子郵件來協(xié)同工作 打破時(shí)間與地 域的限制 大大提高了工作效率 電子郵件已地經(jīng)成為人們生活中不可缺少的一部分 但是 當(dāng)前流行的各大郵件客戶端軟件除了最主要的收發(fā)信件之外 功能越來越復(fù)雜 但是人們平常真正用到的功能很少 很多功能尤其對(duì)于那些計(jì)算機(jī)知識(shí)相對(duì)缺乏的人來說 更加顯得太過于華麗而不實(shí)用 所以這次的 課程設(shè)計(jì) 我選擇了制作一個(gè)操作簡(jiǎn) 單 又可以實(shí)現(xiàn)最基本的電子郵件的收發(fā)功能的工具 1 21 2 功能要求 功能要求 基本發(fā)送和接受郵件的功能 實(shí)現(xiàn)通信功能 具有簡(jiǎn)單 實(shí)用 易操作的圖形界面 在以上基礎(chǔ)上盡量實(shí)現(xiàn)發(fā)送附件的功能 程序還應(yīng)可以判斷整個(gè)過程是否能正常運(yùn)行 如果不正常運(yùn)行 必須給出錯(cuò)誤信息 第二章 系統(tǒng)總體分析第二章 系統(tǒng)總體分析 2 12 1 電子郵件介紹 電子郵件介紹 電子郵件又稱 E mai1 是 種用電子手段提供信息交換的通信方式 它是全球多種網(wǎng) 絡(luò)上使用最普遍的一項(xiàng)服務(wù) 這種非交互式的通信 加速了信息的交流及數(shù)據(jù)傳送 它是 個(gè)簡(jiǎn)易 快速的方法 通過連接全世界的 Internet 實(shí)現(xiàn)各類信號(hào)的傳送 接收 存貯等 處理 將郵件送到世界的各個(gè)角落 到目前為止 可以說電子郵件是 Internet 資源使用最多 的一種服務(wù) E mai1 不只局限于信件的傳遞 還可用來傳遞文件 聲音及圖形 圖像等不 同類型的信息 電子郵件的處理由兩大部分組成 電子郵件發(fā)送程序和電子郵件接收程序 電子郵件 發(fā)送程序的發(fā)送方式有兩種 第一種是本地計(jì)算機(jī)與用戶所指定的發(fā)送郵件服務(wù)器連接 然后通過發(fā)送郵件服務(wù)器將郵件傳遞到接收郵件服務(wù)器 郵件中包含有信件的主題和內(nèi)容 等一系列信息 第二種是本地計(jì)算機(jī)直接與接收電子郵件的服務(wù)器相連 并將郵件送入收件 者的郵箱中 電子郵件接收程序則只需要處理本地計(jì)算機(jī)與存放電子郵件的服務(wù)器相連接 并通過帳號(hào)和口令從服務(wù)器中獲取電子郵件 郵件中包含有信件的主題 內(nèi)容和發(fā)送時(shí)間 等 VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 3 頁 2 22 2 總體設(shè)計(jì)方案及思路 總體設(shè)計(jì)方案及思路 1 1 電子郵件的發(fā)送程序電子郵件的發(fā)送程序 發(fā)送郵件的程序必須能夠做 3 件事情 與接收電子郵件的服務(wù)器相連接 將相關(guān)的信息送入收件人的信箱 程序還應(yīng)可以判斷整個(gè)過程是否能正常運(yùn)行 如果不正常運(yùn)行 必須給出錯(cuò)誤信息 一般情況下 在 中 電子郵件程序的編寫是利用 自帶的 以及相關(guān)的通信協(xié)議 SMPT POP3 等來實(shí)現(xiàn)的 但是要利用 MAPI 和通信協(xié)議實(shí)現(xiàn)一 個(gè)功能強(qiáng)大的電子郵件管理程序 需要很強(qiáng)的相關(guān)專業(yè)知識(shí) 隨著現(xiàn)代軟件業(yè)的發(fā)展 軟 件廠商提供了方便 簡(jiǎn)易 與服務(wù)器無關(guān)且穩(wěn)定的電子郵件處理組件 使我們可以在程序 開發(fā)語言中調(diào)用這些組件 利用很簡(jiǎn)單的語言實(shí)現(xiàn)功能強(qiáng)大的程序 JMail 組件就是一個(gè) 很好用的電子郵件程序開發(fā)第三方組件 所以這次的課程設(shè)計(jì)我選擇了 組件 JMail 組件中包含許多實(shí)現(xiàn)電子郵件處理的屬性和方法 只需要在 VC 代碼中創(chuàng)建一 個(gè) JMail 組件的對(duì)象 調(diào)用其中的某些功能 就能很快完成程序的開發(fā) JMail 常用的發(fā) 送郵件的基本屬性和方法如表 1 所示 表表 1 1 JMailJMail 常用發(fā)送郵件的基本屬性和方法常用發(fā)送郵件的基本屬性和方法 方法和屬性功能 Body 郵件內(nèi)容 Charset 字符集 默認(rèn)為 US ASCII Sendname 發(fā)送人姓名 Sender 發(fā)送人郵箱地址 Serveraddress SMPT 服務(wù)器地址 可制定多個(gè) 用分號(hào) 分開 并可指定端口 為空白時(shí) JMail 會(huì)嘗試解決遠(yuǎn)程郵件服務(wù)器 然后直接發(fā) 送 Subject 標(biāo)題 Priority 優(yōu)先級(jí) 1 高優(yōu)先級(jí) 3 普通優(yōu)先級(jí) 5 低優(yōu)先級(jí) AddAttachment filename ContentType 添加文件附件 AddCustomAttachment filename data 添加自定義附件 AddURLAttachment bstrURL bstrAttachAS bstrAuth 下載并添加一個(gè)來自 bstrURL 的附件 BstrAttachAS 指定受到信件的文件名 AddRecipient Email Address 增加一個(gè)收件人 AddRecipientEX Email Address name 增加一個(gè)帶名字的收件人 AppendBodyFromFile filename 將一個(gè)文件追加到正文后 AppendText Text 追加信的正文內(nèi)容 Execute 方法執(zhí)行發(fā)送 Close 方法強(qiáng)制 JMail 關(guān)閉緩沖與郵件服務(wù)器的連接 VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 4 頁 由于 JMail 是第三方組件 因此 VC 程序要想調(diào)用 JMail 對(duì)象 就必須先下載 JMail 動(dòng)態(tài)鏈接庫 并在本機(jī)中進(jìn)行注冊(cè) 具體操作方法如下 打開運(yùn)行對(duì)話框 輸入 cmd 打 開命令提示符編輯器 輸入如下指令即可注冊(cè)成功 JMail 組件的安裝路徑 regsvr32 jmail dll 2 2 電子郵件的接收程序電子郵件的接收程序 接收郵件的程序必須能夠做三件事 與存放電子郵件的服務(wù)器相連接 讀取相關(guān)的信件信息 并存放與本地計(jì)算機(jī)中 程序還將判斷整個(gè)過程是否能正常運(yùn)行 如果不正常運(yùn)行 必須給出錯(cuò)誤信息 與電子郵件發(fā)送程序的編寫相同 我還是采取 VC 語言和 JMail 組件相結(jié)合的方法來 實(shí)現(xiàn)郵件的收取 JMail 常用的接收郵件的基本屬性和方法如表 2 所示 表表 2 2 JMailJMail 常用接收信件的基本屬性和方法常用接收信件的基本屬性和方法 方法和屬性功能 Body 郵件內(nèi)容 Charset 字符集 默認(rèn)為 US ASCII Date 信件發(fā)送日期 MailServer 郵箱所在的服務(wù)器 Subject 標(biāo)題 Timeout 連接服務(wù)器的超時(shí)限制 Connect 連接服務(wù)器 需要參數(shù) 帳號(hào) 口令 服 務(wù)器地址 端口 2 32 3 模塊分析 模塊分析 電子子郵件接受方式程序主要由以下兩個(gè)大的模塊構(gòu)成 發(fā)送郵件模塊和收取郵件模 塊 其功能模塊如圖 1 所示 電子郵件客戶應(yīng)用系統(tǒng) 發(fā) 送 郵 件 接 收 郵 件 VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 5 頁 圖圖 1 1 電子郵件功能模塊圖電子郵件功能模塊圖 1 1 電子郵件發(fā)送程序的主要模塊電子郵件發(fā)送程序的主要模塊 電子郵件發(fā)送程序主要由以下幾個(gè)模塊組成 郵件服務(wù)器 用于填寫收件人的郵箱服務(wù)器 可以不填 收件人信箱 用于填寫收件人的郵箱名 發(fā)件人信箱 用于填寫發(fā)件人的郵箱名 主題 用于填寫信件主題 正文 用于寫入信件正文 退出 用于退出發(fā)件程序 發(fā)送 用于發(fā)送郵件 關(guān)于 用于顯示軟件開發(fā)的相關(guān)信息 附件 可以手動(dòng)添加附件并完成發(fā)送 該功能正在進(jìn)一步完善中 為本小組另行添加的功能 2 2 電子郵件接收程序的主要模塊電子郵件接收程序的主要模塊 電子郵件接收程序主要由以下幾個(gè)模塊組成 郵件服務(wù)器 用于填寫需要收取信件信箱的服務(wù)器 帳號(hào) 用于填寫需要收取信件的郵箱帳號(hào) 口令 用于填寫需要收取信件的郵箱密碼 郵件列表 顯示郵箱中所有郵件的列表 正文 當(dāng)選中郵件列表中任一郵件時(shí) 顯示該封信件的具體內(nèi)容 退出 用于退出接收郵件程序 收取 用于收取信件 第三章 程序測(cè)試 運(yùn)行截圖 第三章 程序測(cè)試 運(yùn)行截圖 3 13 1 添加 添加 關(guān)于關(guān)于 標(biāo)簽的測(cè)試標(biāo)簽的測(cè)試 在原設(shè)計(jì)的基礎(chǔ)上我添加了一個(gè) 關(guān)于 的標(biāo)簽 點(diǎn)擊該按鈕會(huì)彈出一個(gè)小的對(duì)話框 其中的內(nèi)容包括本小組的成員 程序開發(fā)時(shí)間以及一些關(guān)于郵件方面的相關(guān)幫助信息 程 序的運(yùn)行結(jié)果如圖 1 所示 VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 6 頁 圖圖 2 2 關(guān)于關(guān)于 程序主界面程序主界面 3 23 2 發(fā)送郵件的測(cè)試 發(fā)送郵件的測(cè)試 圖圖 3 3 郵件發(fā)送主界面 不帶附件 郵件發(fā)送主界面 不帶附件 VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 7 頁 圖圖 4 4 發(fā)送郵件程序主界面 加載附件 發(fā)送郵件程序主界面 加載附件 圖圖 5 5 發(fā)送郵件程序主界面 帶附件 發(fā)送郵件程序主界面 帶附件 VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 8 頁 3 33 3 收取郵件的測(cè)試 收取郵件的測(cè)試 圖圖 6 6 收取電子郵件程序主界面收取電子郵件程序主界面 第四章 設(shè)計(jì)總結(jié)第四章 設(shè)計(jì)總結(jié) 4 14 1 課程小結(jié) 課程小結(jié) 在郵件發(fā)送程序中 用戶可以利用 SMPT 服務(wù)器向朋友發(fā)送電子郵件 也可以直接嘗試 鏈接朋友的 E mail 信箱所在的服務(wù)器 這次課程設(shè)計(jì)我所利用的 JMail 組件封裝了很強(qiáng)的 電子郵件處理功能 如附件傳遞 用戶的跟蹤服務(wù) 發(fā)布產(chǎn)品信息 以及電子報(bào)刊處理等 功能 在郵件接受程序中 用戶可以向 POP3 服務(wù)器收取電子郵件 用戶打開郵箱后 將利用 JMail 組件創(chuàng)建的對(duì)象指針遍歷郵箱中的所有郵件 并將郵件信息下載存放于本地計(jì)算機(jī) 中 利用 List 控件的擴(kuò)展屬性顯示郵件的正文內(nèi)容 目前我所做的這個(gè)程序還不夠完整 還存在著很多的不足和不完善的地方 歸納起來 體現(xiàn)在以下幾個(gè)方面 VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 9 頁 軟件的功能趨于簡(jiǎn)單 真正的郵件收發(fā)工具軟件包括很多方面的信息 而不僅僅局 限于發(fā)送郵件和收取郵件 真正的郵件服務(wù)軟件還包括郵件導(dǎo)入 郵件導(dǎo)出 文本編輯 查找與撤消 通訊簿 通訊規(guī)則等等功能 軟件的圖形操作功能缺乏 目前系統(tǒng)中對(duì)郵件附件的添加 刪除功能都沒有圖形快 捷操作 只能通過改變?cè)闯绦蛑械拇a達(dá)到添加附件的目的 而且由于時(shí)間和知識(shí)的欠缺 整個(gè)系統(tǒng)的界面顯得過于單調(diào) 缺乏動(dòng)態(tài)顯示效果 如果能結(jié)合其它界面美化工具 使得 界面更人性化 那就更好了 4 24 2 個(gè)人小結(jié) 個(gè)人小結(jié) 經(jīng)過不懈的努力 終于完成了這次的課程設(shè)計(jì) 其實(shí)在做這次 VC 程序設(shè)計(jì)實(shí)驗(yàn)之前 我基本上沒有真正意義上的接觸過 VC 程序案例的設(shè)計(jì)和開發(fā) 只是通過課堂了解了一些 關(guān)于 VC 的最基本的知識(shí) 所以這次實(shí)驗(yàn)是在邊學(xué)習(xí)邊實(shí)踐的基礎(chǔ)上完成的 由于知識(shí)的 不足 做的結(jié)果自己不是很滿意 與自己原來的設(shè)想也有些差距 但是我也從這兩個(gè)星期 的設(shè)計(jì)和制作過程中學(xué)到了很多知識(shí) 對(duì)自己以后的專業(yè)學(xué)習(xí)甚至將來的工作都有很大的 幫助 附錄 源代碼 附錄 源代碼 1 1 關(guān)于關(guān)于 標(biāo)簽的程序代碼標(biāo)簽的程序代碼 1 1 往頭文件 StdAfx h 中添加下列代碼 define CRLF x0d x0a 注意這兩行必須添加注意這兩行必須添加 define CRLF2 CRLF CRLF 2 2 主要代碼如下 BOOL CAboutDlg OnInitDialog CDialog OnInitDialog TODO TODO AddAdd extraextra initializationinitialization herehere m strEditHelp 相關(guān)幫助信息 CRLF CRLF 一 發(fā)送郵件服務(wù)器和發(fā)信人信箱有密切關(guān)系 假如你的信箱為 loop 則發(fā)送郵件服務(wù)器一般為 當(dāng)然這也不是絕對(duì)的 你可以到你的郵件相關(guān)網(wǎng) 站查詢 不知道服務(wù)器名的話也可以不填 CRLF CRLF 二 發(fā)信信箱格式比較靈活 如下兩種格式均為合法的 1 在你的 E Mail 首尾 加小于大于符號(hào) 2 直接填寫你的 E Mail loomman VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 10 頁 CRLF CRLF 三 接受信箱可以為多個(gè) 中間用分號(hào) 隔開 例如 Pookie snuggles 某些信箱前面的部分字符串是收信人名稱 例如上面的 Pookie 可以省略不寫 例如下面一 行和上面一行是等價(jià)的 它們都是可以接受的信箱輸入格式 CRLF CRLF 四 郵件主題 當(dāng)然就是郵件的標(biāo)題了 你可以隨意輸入自己喜愛的標(biāo)題 CRLF CRLF 五 郵件正文就是你要發(fā)給對(duì)方的信息 CRLF CRLF 六 最后不得不提一下 由于當(dāng)今好多發(fā)送郵件服務(wù)器都要求身份驗(yàn)證 也就 是需要提供的你的信箱密碼 鑒于技術(shù)問題 這類信箱本程序暫時(shí)不支持 CRLF CRLF 周清 周慶 蒯志剛 于雯 CRLF 2007 年 7 月 CRLF UpdateData FALSE UpdateUpdate thethe DialogDialog return TRUE returnreturn TRUETRUE unlessunless youyou setset thethe focusfocus toto a a controlcontrol EXCEPTION EXCEPTION OCXOCX PropertyProperty PagesPages shouldshould returnreturn FALSEFALSE 2 2 發(fā)送郵件程序代碼 發(fā)送郵件程序代碼 1 1 往頭文件 StdAfx h 中添加 JMail 對(duì)象的聲明 這樣才能在整個(gè)程序中應(yīng)用 JMail 對(duì) 象 代碼如下 import C jmail jmail dll 顯示指定顯示指定 JMailJMail 動(dòng)態(tài)鏈接庫動(dòng)態(tài)鏈接庫 using namespace jmail 定義程序中定義程序中 JMailJMail 對(duì)象的名稱對(duì)象的名稱 2 2 頭文件 MailServer h 利用 ClassWizard 類項(xiàng)導(dǎo)添加退出應(yīng)用程序的函數(shù) ExitInstnace 源代碼如下 Overrides ClassWizard generated virtual function overrides AFX VIRTUAL CMailServerApp public virtual BOOL InitInstance virtual int ExitInstance AFX VIRTUAL VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 11 頁 3 3 源文件 MailServer cpp 類 CMailServerApp 的實(shí)現(xiàn)文件 1 1 由于程序中應(yīng)用了 JMail 組件 因此必須在 InitInstance 函數(shù)中添加如下代碼 進(jìn) 行應(yīng)用程序的初始化 BOOL CMailServerApp InitInstance AfxEnableControlContainer CoInitialize NULL ifdef AFXDLL Enable3dControls Call this when using MFC in a shared DLL 2 2 應(yīng)用程序時(shí) 在 ExitInstance 函數(shù)中添加釋放各變量的代碼 應(yīng)用程序退出時(shí) int CMailServerApp ExitInstance TODO Add your specialized code here and or call the base class return CWinApp ExitInstance CoUninitialize 4 4 MailServerDlg h 中 CMailServerDlg 類的接口 1 1 在頭文件 MailServerDlg h 中 添加各控件的控件變量 如下表所示 控件控件變量 IDC EDIT MAILSERVERm strmailserver IDC EDIT RECIPIENTSm strrecipients IDC EDIT SENDERm strsender IDC EDIT SUBJECTm strsubject IDC EDIT BODYm strbody 2 2 利用 ClassWizard 添加 IDOK 控件的 ON BN CLICKED 事件函數(shù) 代碼如下 Protected AFX MSG CMailServerDlg Afx msg void OnSend AFX MSG 3 3 源文件 MailServerDlg cpp 類 CMailServerDlg 的實(shí)現(xiàn)文件 打開 MailServerDlg cpp 文件 添加發(fā)送郵件函數(shù) OnSend 的代碼如下 發(fā)送郵件程序發(fā)送郵件程序 void CMailServerDlg OnSend TODO Add your control notification handler code here UpdateData 獲取 Edit 控件中的字符串 m strmailserver TrimLeft VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 12 頁 m strmailserver TrimRight m strrecipients TrimLeft m strrecipients TrimRight m strsender TrimLeft m strsender TrimRight 判斷 Edit 控件中的字符串是否有效 if m strrecipients GetLength 3 AfxMessageBox 請(qǐng)?zhí)顚懻_的收件人信箱 return if m strsender GetLength From LPCTSTR m strsender 發(fā)件人姓名 pMessage FromName 我的名字 添加收件人 pMessage AddRecipient LPCTSTR m strrecipients 優(yōu)先級(jí)設(shè)置 1 5 逐次降低 3 為中級(jí) pMessage Priority 3 編碼方式設(shè)置 默認(rèn)是 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 error e CString strErr VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 13 頁 strErr Format 錯(cuò)誤信息 s r n 錯(cuò)誤描述 s LPCTSTR e ErrorMessage LPCTSTR e Description AfxMessageBox strErr 3 3 附件實(shí)現(xiàn)的代碼 附件實(shí)現(xiàn)的代碼 附件發(fā)送的實(shí)現(xiàn) 附件發(fā)送的實(shí)現(xiàn) 1 1 首先在 CMailServerDld 類中定義幾個(gè)對(duì)象 public CString str CString tr BOOL strbool bstr t bstr 2 2 加載文件 void CMailServerDlg OnBtAddfile TODO Add your control notification handler code here CFileDialog cg TRUE if cg DoModal IDOK strbool true else strbool false cg DoModal str cg GetPathName MessageBox str 3 3 發(fā)送附件 bstr str AllocSysString CString 類型轉(zhuǎn)換成 bstr t 類型 if strbool true 判斷有沒有打開附件 bstr t bstrCID pMessage AddAttachment bstr VARIANT TRUE 開始發(fā)送 帶附件 pMessage Send LPCTSTR m strmailserver VARIANT FALSE pMessage Release AfxMessageBox 發(fā)送成功 帶附件 else VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 14 頁 開始發(fā)送 不帶附件 pMessage Send LPCTSTR m strmailserver VARIANT FALSE pMessage Release AfxMessageBox 發(fā)送成功 不帶附件 捕捉異常 catch com error e CString strErr strErr Format 錯(cuò)誤信息 s r n 錯(cuò)誤描述 s LPCTSTR e ErrorMessage LPCTSTR e Description AfxMessageBox strErr 4 4 接受郵件程序代碼 接受郵件程序代碼 1 1 往頭文件 StdAfx h 中添加 JMail 對(duì)象的聲明 這樣才能在整個(gè)程序中應(yīng)用 JMail 對(duì)象 代碼如下 顯示指定 JMail 動(dòng)態(tài)鏈接庫 import C jmail jmail dll 定義程序中 JMail 對(duì)象的名稱 using namespace jmail 2 2 頭文件 MailServer h 利用 ClassWizard 類項(xiàng)導(dǎo)添加退出應(yīng)用程序的函數(shù) ExitInstnace 源代碼如下 Overrides ClassWizard generated virtual function overrides AFX VIRTUAL CMailServerApp public virtual BOOL InitInstance virtual int ExitInstance AFX VIRTUAL 3 3 源文件 MailRecieve cpp 類 CMailRecieveApp 的實(shí)現(xiàn)文件 1 1 由于程序中應(yīng)用了 JMail 組件 因此必須在 InitInstance 函數(shù)中添加如下代碼 進(jìn)行應(yīng)用程序的初始化 BOOL CMailRevieveApp InitInstance AfxEnableControlContainer CoInitialize NULL ifdef AFXDLL Enable3dControls Call this when using MFC in a shared DLL VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 15 頁 2 2 應(yīng)用程序時(shí) 在 ExitInstance 函數(shù)中添加釋放各變量的代碼 應(yīng)用程序退出時(shí) int CMailRecieveApp ExitInstance TODO Add your specialized code here and or call the base class return CWinApp ExitInstance CoUninitialize 4 4 MailRecieveDlg h 中 CMailRecieveDlg 類的接口 1 1 在頭文件 MailRecieveDlg h 中 添加各控件的控件變量 如下表所示 控件控件變量 IDC EDIT MAILSERVERm strmailserver IDC EDIT MESSAGESm strcltmessageslist IDC EDIT PASSWORDm strpassword IDC EDIT USERIDm struserid IDC EDIT BODYm strbody 2 2 利用 ClassWizard 添加 IDOK 控件的 ON BN CLICKED 事件函數(shù) 添加 List 控件的 LVN ITEMCHANGE 事件函數(shù) 代碼如下 Protected AFX MSG CMailServerDlg Afx msg void OnRecieve afx msg void OnShowBody NMHDR Pnmhdr lresult pResult AFX MSG 3 3 源文件 MailRecieverDlg cpp 類 CMailRecieveDlg 的實(shí)現(xiàn)文件 向 MailServerDlg cpp 文件中添加初始化對(duì)話框函數(shù) OnInitDialog 的代碼 OnRecieve 的 代碼和顯示郵件正文函數(shù) OnShowBody 的代碼 BOOL CMailRecieveDlg OnInitDialog TODO Add extra initialization here 初始化對(duì)話框的函數(shù) 升級(jí)列表控件 SendMessage m ctlmessagelist m hWnd LVM SETEXTENDEDLISTVIEWSTYLE LVS EX F ULLROWSELECT 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 return TRUE return TRUE unless you set the focus to a control 接收郵件函數(shù) VC VC 課程設(shè)計(jì)課程設(shè)計(jì) 第 16 頁 void CMailRecieveDlg OnRecieve TODO Add your control notification handler code here 接受郵件的函數(shù)接受郵件的函數(shù) UpdateData 格式化 Edit 控件中的字符串 m strmailserver TrimLeft m strmailserver TrimRight m struserid TrimLeft m struserid TrimRight m strpassword TrimLeft m strpassword TrimRight 判斷帳號(hào)口令是否存在 if m strmailserver GetLength 0 AfxMessageBox 郵件服務(wù)器不能為空 return if m struserid GetLength Timeout 30 鏈接郵件服務(wù)器 110 為 POP3 默認(rèn)端口號(hào) pPOP3 Connect LPCTSTR m struserid LPCTSTR m strp

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論