ASP.NET郵件收發(fā)系統(tǒng)計(jì)算機(jī)與軟件工程專業(yè)畢業(yè)設(shè)計(jì)畢業(yè)論文.doc
《ASP.NET郵件收發(fā)系統(tǒng)計(jì)算機(jī)與軟件工程專業(yè)畢業(yè)設(shè)計(jì)畢業(yè)論文.doc》由會員分享,可在線閱讀,更多相關(guān)《ASP.NET郵件收發(fā)系統(tǒng)計(jì)算機(jī)與軟件工程專業(yè)畢業(yè)設(shè)計(jì)畢業(yè)論文.doc(35頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 目目 錄錄 1 1 緒論緒論3 1.1 電子郵件介紹3 1.1.1 介紹3 1.2 開發(fā)背景4 1.3 課題研究方法4 1.4 開發(fā)環(huán)境及運(yùn)行環(huán)境4 1.4.1 開發(fā)環(huán)境.4 1.4.2 運(yùn)行環(huán)境.4 2 2 郵件收發(fā)系統(tǒng)設(shè)計(jì)郵件收發(fā)系統(tǒng)設(shè)計(jì)5 2.1 軟件架構(gòu)及系統(tǒng)用例圖5 2.1.1 系統(tǒng)架構(gòu).5 2.1.2 系統(tǒng)總體用例.6 2.1.3 程序功能框圖.6 3 3 電子郵件的標(biāo)準(zhǔn)格式電子郵件的標(biāo)準(zhǔn)格式 (RFC(RFC 822)822).7 3.1 RFC 822 簡介.7 3.2 信件的頭部7 3.2.1 信頭的一般格式.7 3.2.2 結(jié)構(gòu)化字段和非結(jié)構(gòu)化
2、字段.8 3.2.3 信頭字段的元素.8 3.2.4 標(biāo)準(zhǔn)的信頭字段9 3.3 SMTP 協(xié)議簡介及工作原理.12 3.3.1 介紹.12 3.3.2 SMTP 模型12 3.4 SMTP 協(xié)議的命令和應(yīng)答.13 3.4.1 SMTP 協(xié)議的命令13 3.4.2 SMTP 的應(yīng)答碼14 4 4 重要模塊設(shè)計(jì)重要模塊設(shè)計(jì).16 4.1 用戶登錄模塊16 4.2 用戶郵箱主頁16 4.3 收件箱16 4.4 發(fā)件箱17 4.5 刪除郵件17 4.6 通訊錄17 4.7 草稿箱17 4.8 新建聯(lián)系人18 4.9 寫信18 ASP.NET 郵件收發(fā)系統(tǒng) 4.10 郵件轉(zhuǎn)發(fā)18 5 5 主要功能介紹主
3、要功能介紹.19 5.1 用戶登錄模塊19 5.2 框架的搭建20 5.2.1 主要架構(gòu):20 5.2.2 友情鏈接圖片 Log 及鏈接:20 5.3 收件箱21 5.4 郵件發(fā)送23 5.4.1 發(fā)送郵件的主要代碼:23 5.4.2 發(fā)送附件代碼:24 5.5 刪除郵件27 5.5.1 獲取要刪除的信息字段 ID:.27 5.5.2 刪除數(shù)據(jù)庫中的數(shù)據(jù):28 5.6 通訊錄28 5.6.1 綁定通訊錄:.28 5.6.2 刪除聯(lián)系人:29 5.7 草稿箱29 5.7.1 草稿箱的數(shù)據(jù)綁定:29 5.7.2 草稿箱數(shù)據(jù)的刪除:30 5.8 聯(lián)系人30 5.9 郵件轉(zhuǎn)發(fā)30 6 6 數(shù)據(jù)庫設(shè)計(jì)數(shù)
4、據(jù)庫設(shè)計(jì)31 6.1 登錄系統(tǒng)31 6.2 收件箱32 6.3 發(fā)件箱32 6.4 聯(lián)系人33 7 7 結(jié)論結(jié)論.33 8 8 參考文獻(xiàn)參考文獻(xiàn)33 9 9 致謝致謝.34 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 1 緒論 1.1 電子郵件介紹 1.1.1 介紹 電子郵件(簡稱 E-mai1)又稱電子信箱、電子郵政,它是種用電子手段提供信息 交換的通信方式。它是全球多種網(wǎng)絡(luò)上使用最普遍的一項(xiàng)服務(wù)。這種非交互式的通信, 加速了信息的交流及數(shù)據(jù)傳送,它是個簡易、快速的方法。通過連接全世界的 Internet,實(shí)現(xiàn)各類信號的傳送、接收、存貯等處理,將郵件送到世界的各個角落。到 目前為止,可以說電子郵件是 In
5、ternet 資源使用最多的一種服務(wù),E-mai1 不只局限于 信件的傳遞,還可用來傳遞文件、聲音及圖形、圖像等不同類型的信息。 電子郵件不是一種“終端到終端”的服務(wù),是被稱為“存貯轉(zhuǎn)發(fā)式”服務(wù)。這正是 電子信箱系統(tǒng)的核心,利用存貯轉(zhuǎn)發(fā)可進(jìn)行非實(shí)時(shí)通信,屬異步通信方式。即信件發(fā) 送者可隨時(shí)隨地發(fā)送郵件,不要求接收者同時(shí)在場,即使對方現(xiàn)在不在,仍可將郵件 立刻送到對方的信箱內(nèi),且存儲在對方的電子郵箱中。接收者可在他認(rèn)為方便的時(shí)候讀 取信件,不受時(shí)空限制。在這里,“發(fā)送”郵件意味著將郵件放到收件人的信箱中,而 “接收”郵件則意味著從自己的信箱中讀取信件,信箱實(shí)際上是由文件管理系統(tǒng)支持的 個實(shí)體。因
6、為電子郵件是通過郵件服務(wù)器(mai1 server)來傳遞檔的。通常 mail server 是執(zhí)行多任務(wù)操作系統(tǒng) UNIX 的計(jì)算機(jī),它提供 24 小時(shí)的電子郵件服務(wù),用戶只 要向 mail server 管理人員申請個信箱賬號,就可使用這項(xiàng)快速的郵件服務(wù)。 電子郵件的工作原理: 1) 電子郵件系統(tǒng)是一種新型的信息系統(tǒng),是通信技術(shù)和計(jì)算機(jī)技術(shù)結(jié)合的產(chǎn)物。 電子郵件的傳輸是通過電子郵件簡單傳輸協(xié)議(Simple Mail Transfer Protocol, 簡稱 SMTP)這一系統(tǒng)軟件來完成的,它是 Internet 下的一種電子郵件通信協(xié)議。 2) 電子郵件的基本原理,是在通信網(wǎng)上設(shè)立“電
7、子信箱系統(tǒng)” ,它實(shí)際上是一個計(jì) 算機(jī)系統(tǒng)。系統(tǒng)的硬件是一個高性能、大容量的計(jì)算機(jī)。硬盤作為信箱的存儲介質(zhì),在 硬盤上為用戶分一定的存儲空間作為用戶的“信箱” ,每位用戶都有屬于自己的個電 子信箱。并確定個用戶名和用戶可以自己隨意修改的口令。存儲空間包含存放所收 ASP.NET 郵件收發(fā)系統(tǒng) 信件、編輯信件以及信件存盤三部分空間,用戶使用口令開啟自己的信箱,并進(jìn)行發(fā)信、 讀信、編輯、轉(zhuǎn)發(fā)、存檔等各種操作。系統(tǒng)功能主要由軟件實(shí)現(xiàn)。 3) 電子郵件的通信是在信箱之間進(jìn)行的。用戶首先開啟自己的信箱,然后通過鍵 入命令的方式將需要發(fā)送的郵件發(fā)到對方的信箱中。郵件在信箱之間進(jìn)行傳遞和交換, 也可以與另個
8、郵件系統(tǒng)進(jìn)行傳遞和交換。收方在取信時(shí),使用特定賬號從信箱提取。 1.2 開發(fā)背景 當(dāng)前流行的各大郵件客戶端軟件的除了最主要的收發(fā)信件之外,功能越來越復(fù)雜, 但是人們平常真正用到的功能很少,很多功能尤其對于那些計(jì)算機(jī)知識相對缺乏的人來 說,更加顯得太過于華麗而不太實(shí)用。有鑒于此,在了解 RFC 底層協(xié)議的基礎(chǔ)上,我 們開發(fā)了這個各種功能相對簡單實(shí)用的郵件客戶端程序,簡化了很多不必要的功能。 1.3 課題研究方法 郵件收發(fā)是多個客戶之間交流的工具,起到通信功能 。我的畢業(yè)設(shè)計(jì)所做的虛擬 機(jī)采用標(biāo)準(zhǔn) 語言編寫,在結(jié)構(gòu)上模仿了 126 郵箱與新浪郵箱的設(shè)計(jì)。 1.4 開發(fā)環(huán)境及運(yùn)行環(huán)境 1.4.1 開
9、發(fā)環(huán)境 AMD Athlon(TM),512M 內(nèi)存,80G 硬盤 Microsoft Windows XP Professional Microsoft Visual Studio 2008(C Sharp) Microsoft Developer Network for Visual Studio.NET 2008 Microsoft SQL Server 2005 1.4.2 運(yùn)行環(huán)境 Intel Pentium 2 及以上處理器,32M 以上內(nèi)存,4G 以上硬盤 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) Microsoft Windows 9X/NT 操作系統(tǒng) 800*600 或以上的屏幕分辨率
10、確保機(jī)器上安裝有.Net Framework 1.0 或者以上版本 (以后略) 2 郵件收發(fā)系統(tǒng)設(shè)計(jì) 2.1 軟件架構(gòu)及系統(tǒng)用例圖 2.1.1 系統(tǒng)架構(gòu) 軟件的總體架構(gòu)如圖 2.1: 圖 2.1 軟件架構(gòu)圖 主界面 主要功能選 擇 用戶 發(fā)送郵件 類 接收郵件 類 ASP.NET 郵件收發(fā)系統(tǒng) 2.1.2 系統(tǒng)總體用例 存入草稿 刪除郵件 接收郵件 登錄賬號 注冊賬號 發(fā)送郵件 純文本郵件 帶附件郵件 圖 2.2 系統(tǒng)總體用例圖 2.1.3 程序功能框圖 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 客戶端軟件 郵件接收系統(tǒng) 郵件接收系統(tǒng) 刪除郵件 簡單郵件接收 帶有附件的郵件接收 簡單郵件發(fā)送 帶有附件的郵
11、件發(fā)送 聯(lián)系人管理 徹底刪除 存入草稿箱 添加聯(lián)系人 刪除聯(lián)系人 修改聯(lián)系人 圖 2.3 程序功能圖 3 電子郵件的標(biāo)準(zhǔn)格式 (RFC 822) 3.1 RFC 822 簡介 RFC822 規(guī)定的電子郵件內(nèi)容全部由 ASCII 字符組成,就是通常所說的文本文件, 因而標(biāo)準(zhǔn)將它稱為 Internet 文本信件(Internet Text Messages)。 從直觀上看,信件非常簡單,就是一系列由 ASCII 字符組成的文本行,每一行以 回車換行符(“CRLF“,就是 ASCII 碼的 13 和 10)結(jié)束。 從組織上看,信件內(nèi)容結(jié)構(gòu)分為兩大部分,中間用一個空白行(只有 CRLF 符的行) 來分
12、隔。第一部分稱為信件的頭部(the header of the message),包括有關(guān)發(fā)送方、 接收方、發(fā)送日期等信息。第二部分稱為信件的體部(Body of the message),包括信 件內(nèi)容的正文文本。信頭是必需的,信體是可選的,即信體可有可無。如果不存在信 ASP.NET 郵件收發(fā)系統(tǒng) 體,用作分隔的空白行也就不需要。在信體中,也可以有用作分隔的空白行。這樣設(shè) 計(jì)的信件便于進(jìn)行語法分析,提取信件的基本信息。 在 RFC822 中規(guī)定,信件體就是一系列的向收信人表達(dá)信息的文本行,比較簡單,可以 包含任意文本,并沒有附加的結(jié)構(gòu)。信件頭則具有比較復(fù)雜的結(jié)構(gòu)。 3.2 信件的頭部 3.
13、2.1 信頭的一般格式 信頭的結(jié)構(gòu)比較復(fù)雜,信頭由若干信頭字段(header field)組成,這些字段為用 戶和程序提供了關(guān)于信件的信息。要了解信頭的結(jié)構(gòu)就要弄清楚各種信頭字段。 所有的信頭字段都具有相同的語法結(jié)構(gòu),從邏輯上說,包括四部分,字段名 (field name),緊跟冒號“:“ (colon),后跟字段體(field body),最后以回車換行符 (CRLF)終止。即 信頭字段 = 字段名:字段體 CRLF 字段名必須由除了冒號和空格以外的可打印 USASCII 字符(其值在 33 和 126 之 間)組成,大多數(shù)字段的字段名稱由一系列字母,數(shù)字組成,中間經(jīng)常插入橫線符。字 段名告
14、訴電子郵件軟件如何翻譯該行中剩下的內(nèi)容。 字段體可以包括除了 CR 和 LF 之外的任何 ASCII 字符。但是其中的空格,加括號的注 釋,引號和多行字段都比較復(fù)雜,另外,字段體的語法和語義依賴于字段名,每個類 型的字段有特定的格式。RFC822 為信件定義了一些標(biāo)準(zhǔn)字段,并提供了用戶自行定義 非標(biāo)準(zhǔn)字段的方 3.2.2 結(jié)構(gòu)化字段和非結(jié)構(gòu)化字段 每個字段所包含的信息不同,字段大體可以分為結(jié)構(gòu)化字段和非結(jié)構(gòu)化字段。 結(jié)構(gòu)化字段有特定的格式,由語法分析程序檢測。Sender 字段就是一個很好的例 子,它的字段內(nèi)容是信箱, 有一個離散的結(jié)構(gòu)。 非結(jié)構(gòu)化的字段含有任意的數(shù)據(jù),沒有固定格式。例如,Su
15、bject 字段可以含有任 意的文字,并且沒有固定格式。非結(jié)構(gòu)化的字段數(shù)量較少,只有 Subject、 Comments、擴(kuò)展字段,非標(biāo)準(zhǔn)字段、INReply 和 References 等。所有其它字段都是 結(jié)構(gòu)化的。 3.2.3 信頭字段的元素 盡管 Email 信件的總體結(jié)構(gòu)非常簡單,但一些信頭字段的結(jié)構(gòu)是很復(fù)雜的。下面 介紹一些大多數(shù)字段共有的元素。 (1)空白符 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 像其它文本文件一樣,空白符包括空格符(ASCII 碼 32)和制表符 Tab(ASCII 碼 19)。 此外,行末的回車換行符 CRLF 也應(yīng)算是空白符。使用空白符可以對字段進(jìn)行格式化, 增加它的
16、可讀性。例如,每個字段間用 CRLF 來分離,在字段內(nèi)用空格來分隔字段名和 字段內(nèi)容。在 Subject 后面的冒號和內(nèi)容之間插入空格字符,會使字段結(jié)構(gòu)更加清晰。 在 Email 中,空白符的使用并沒有固定的規(guī)則,但應(yīng)當(dāng)正確地使用,僅在需要時(shí)才使 用空白符,以便接收軟件進(jìn)行語法分析。 (2)注解 注解是由括號括起來的一系列字符,例如,(這份禮物)。注解一般用在非結(jié)構(gòu)化 的信頭字段中,沒有語法語義,僅為人提供了一些附加的信息。如果在加引號的字符 串中有包括在括號中的字符,那是字符串的一部分,不是注解。在解釋信件的時(shí)候, 會將注解忽略,可以用一個空格字符代替它們,這樣就什么也不會破壞。 (3)字段
17、折疊 每個信頭字段從邏輯上說應(yīng)當(dāng)是一個由字段名、冒號、字段體和 CRLF 組成的單一 的行,但為了書寫與顯示的方便,增加可讀性,也為了符合 1000/80 的行字符數(shù)的限 制,可以將超過 80 個字符的信頭字段分為多行,即對于比較長的字段,可以分割成幾 行,形成折疊。在結(jié)構(gòu)化和非結(jié)構(gòu)化字段中都允許折疊。通過在字段中某些點(diǎn)插入 CRLF 符和至少一個或多個空白字符來實(shí)現(xiàn)字段的折疊,第一行后面的行稱為信頭字段 的續(xù)行。續(xù)行都以一個空白符開始,這種方法稱為折疊(folding),例如標(biāo)題字段 Subject: This is a test 可以表示為:Subject: This is a test
18、反之,將一個被折疊成多行的信頭字段恢復(fù)到它的單行表示的過程叫做去折疊, 只要簡單地移除后面跟著空格的 CRLF,將折疊空白符 CRLF 轉(zhuǎn)換成空格字符,就可以完 成去折疊(unfolding)。在分析被折疊的字段的語法時(shí),要把一個多行的折疊字段展開 為一行,根據(jù)它的非折疊的形式來分析它的語法與語義。 (4)字段大小寫 字段名稱是不區(qū)分大小寫的,所以 Subject、subject 或 SUBJECT 都一樣。不過字 段名稱大小寫有習(xí)慣的常用形式,如主題字段的大小寫形式通常為 Subject。字段體的 大小寫稍微復(fù)雜點(diǎn),要視情況而定。比如 Subject 后面的字段體,其中的大寫可能就 是縮寫的
19、專用名詞,不能改動。 3.2.4 標(biāo)準(zhǔn)的信頭字段 下面介紹 RFC822 中定義的常用的標(biāo)準(zhǔn)信頭字段。 表 3-1 RFC822 常用的標(biāo)準(zhǔn)信頭字段 與發(fā)信方有關(guān)的信頭字段 格式:From:mailbox 舉例: 寫信人字段。說明信件的原始創(chuàng)建者,給出他的 電子信箱地址。創(chuàng)建者對信件的原始內(nèi)容負(fù)責(zé)。 ASP.NET 郵件收發(fā)系統(tǒng) From: 格式:Sender:mailbox 舉例: From: Sender: 發(fā)送者字段。說明實(shí)際提交發(fā)送這個信件的人, 給出他的電子信箱地址。當(dāng)發(fā)信人與寫信人不一 樣時(shí)使用。比如,秘書替經(jīng)理發(fā)信。發(fā)送者對發(fā) 送負(fù)責(zé)。 格式:Reply- TO:mailbox
20、舉例: From: From: 回復(fù)字段。指定應(yīng)當(dāng)把回信發(fā)到哪里。如果有此 字段,回信將會發(fā)給它指定的郵箱,而不會發(fā)給 From 字段指定的郵箱。比如,發(fā)送的是經(jīng)理的信, 但回信應(yīng)交辦公室處理。 與收信方有關(guān)的信頭字段 格式:TO:mailbox list 舉例:TO: 收信人字段。指定主要收信人的郵箱地址,可 以是多個郵箱地址的列表,地址中間用逗號隔 開。 格式:Cc:mailbox list 舉例:Cc: 抄送字段。指定此信件要同時(shí)發(fā)給哪些人,也 稱為抄送。也可以使用郵箱地址列表,抄送給 多個人。 格式:Bcc:mailbox list密抄字段。指定此信件要同時(shí)秘密發(fā)給哪些人, 也稱為密件
21、抄送。也可以使用郵箱地址列表, 密抄給多個人。 其它的信頭字段 格式:Date:date-time 舉例:Date:Tue,04 Dec 2004 16:18:08 +800 日期字段:Date 字段含有電子郵件創(chuàng)建的日期 和時(shí)間。 格式:Subject:*text 舉例:Subject:Hello! Subject:Re:Hello! 信件主題字段。描述信件的主題。當(dāng)回復(fù)信件 時(shí),通常在主題前面增加“Re:”前綴,標(biāo)記 為該信件為回復(fù)信件:當(dāng)信件被轉(zhuǎn)發(fā)時(shí),通常 在主題文字前面加上“Fw:”,“Fwd:”這樣 的前綴。 格式:Received:“from“ domain ;發(fā)送主機(jī) “by“
22、domain ;接收主 機(jī) “via“ atom ;物理路 接受字段。是投遞信件的特定郵件服務(wù)器所作 的記錄。處理郵件投遞的每個服務(wù)器必須給它 處理的每個信頭的前面加一個 Received 字段, 用以描述信件到達(dá)目的地所經(jīng)過的路徑以及相 關(guān)信息。當(dāng)跟蹤各個電子郵件問題時(shí),這個信 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 徑 “id“ msg-id ;接收者 msg id 息很有幫助。 舉例:Received:from wang195.0.0.1 by li129.5.0.4 Tue dec 2003 12:18:02 +800 格式:Comments:*text注釋字段。用于把一個注解添加到信件中。 格
23、式:Resent-* 舉例:Resent-From Resent-Sender Resent-date Resent-Reply-To 重發(fā)字段。當(dāng)需要把收到的信件重發(fā)給另一組收 信人的時(shí)候,可以保持整個原始信件不變,并簡 單地產(chǎn)生重發(fā)信件所要求的新信頭字段。為避免 與以前的字段相混。新添加的信頭字段都加上 Resent-前綴字符串,它們的語法與未加前綴的 同名字段相同。 格式:Message-ID:msg- id 信件標(biāo)識字段。用于表示一個信件唯一標(biāo)識,該 字段通常有 Smtp 服務(wù)器生成,這個值通常是唯 一的。形式根據(jù)使用的軟件而定。通常左邊是標(biāo) 識符,右邊指定電腦名 表 3-1 中的關(guān)鍵
24、字表明了電子郵件借用了辦公室備忘錄中的概念和術(shù)語:電子郵 件的頭部能夠包含一行說明應(yīng)當(dāng)接收到該備忘錄的接收方。象傳統(tǒng)的辦公室備忘錄一 樣,電子郵件使用關(guān)鍵字 Cc 指明一個復(fù)寫副本(carbon copy).電子郵件軟件必須向 Cc:后 面的電子郵件地址表中的每個地址發(fā)送一份消息的副本。 傳統(tǒng)的辦公室過程要求備忘錄的發(fā)送方通知接收方副本是否傳給其它人。有時(shí)發(fā) 送方希望將備忘錄的一個副本給別人而不顯示出有一個副本被發(fā)送出去。一些電子郵 件系統(tǒng)提供這樣的選項(xiàng),遵循傳統(tǒng)的辦公室術(shù)語,用盲復(fù)寫副本(blind carbon copy) 來表示。創(chuàng)建消息的用戶 在關(guān)鍵字 Bcc 后給出一個電子郵件地址表
25、,指定一個或多個盲復(fù)寫副本。雖然 Bcc 在發(fā)送方出現(xiàn),但當(dāng)信息發(fā)送時(shí),郵件系統(tǒng)將它從消息中除去。每個接收方必須檢查 頭部的 To 和 Cc 行以決定信息是直接發(fā)送還是作為盲副本發(fā)送的(有些郵件系統(tǒng)在正文 部分附加信息來告訴接收者它是一個盲副本)。其它接收者不知道有哪些用戶接收到盲 副本。 電子郵件使用與傳統(tǒng)的辦公室備忘錄相同的格式和術(shù)語:頭部包括與消息有關(guān)的 信息,正文包括消息文本。電子郵件頭部的行說明發(fā)送方、接收方、日期、主題、應(yīng) 當(dāng)收到副本的人的列表。 (1)擴(kuò)展字段 ASP.NET 郵件收發(fā)系統(tǒng) 如果想在信頭中加入 RFC822 中沒有規(guī)定的字段,就需要創(chuàng)建非標(biāo)準(zhǔn)字段。方法非 常簡單,
26、只要在自定義的信頭字段名的前面使用 X-前綴。RFC822 將這種方法稱為擴(kuò)展 字段。事實(shí)上已經(jīng)有許多擴(kuò)展字段被廣泛應(yīng)用,但沒有標(biāo)準(zhǔn)定義。例如: X-LOOP 字段 X-LOOP 字段用來防止郵件的循環(huán)傳送。過濾或郵件列表處理程序,可以給它處理 的每個信件增加一個 X-LOOP 字段,以后就可以根據(jù)這個字段中含有的特別值,判斷一 個信件是否被循環(huán)傳送。如果確認(rèn)郵件發(fā)生了循環(huán),過濾或郵件列表處理程序就可以 用不同的方式處理該信件。 X-Mailer 字段 X-Mailer 字段用于指示什么樣的程序產(chǎn)生了這個信件,它是使用最廣泛的擴(kuò)展字 段。產(chǎn)生郵件的軟件可以為所有發(fā)送的信件增加合適的 X-Mai
27、ler 字段,該字段不僅含 有軟件的名稱,還包含軟件的版本號。 (2) 普通關(guān)鍵字 下表 3-2 列出了一些在因特網(wǎng)電子郵件中可以找到的普通關(guān)鍵字,以及它們的含 義。 信頭字段目的 From郵件作者 Sender發(fā)信人 Reply-To回郵地址 To收信人地址 CC抄送:另一個收信人地址 BCC密送:收信人地址,但其 它收信人看不到這個收信人的 地址。 Subject主題 Comments備注 Keywords關(guān)鍵字,用來進(jìn)一步搜索 郵件 In-Reply-To被當(dāng)前郵件回復(fù)的郵件的 ID 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) References幾乎同 In-Reply-To 一樣 Encrypte
28、d加密郵件的加密類型 Date發(fā)信日期 3.3 SMTP 協(xié)議簡介及工作原理 3.3.1 介紹 簡單郵件傳輸協(xié)議(SMTP)的目標(biāo)是可靠高效地傳送郵件,它獨(dú)立于傳送子系統(tǒng) 而且僅要求一條可以保證傳送數(shù)據(jù)單元順序的通道。 SMTP 的一個重要特點(diǎn)是它能夠在傳送中接力傳送郵件,傳送服務(wù)提供了進(jìn)程間通 信環(huán)境(IPCE),此環(huán)境可以包括一個網(wǎng)絡(luò),幾個網(wǎng)絡(luò)或一個網(wǎng)絡(luò)的子網(wǎng)。理解到傳 送系統(tǒng)(或 IPCE)不是一對一的是很重要的。進(jìn)程可能直接和其它進(jìn)程通過已知的 IPCE 通信。郵件是一個應(yīng)用程序或進(jìn)程間通信。郵件可以通過連接在不同 IPCE 上的進(jìn) 程跨網(wǎng)絡(luò)進(jìn)行郵件傳送。更特別的是,郵件可以通過不同網(wǎng)
29、絡(luò)上的主機(jī)接力式傳送。 3.3.2 SMTP 模型 SMTP 設(shè)計(jì)基于以下通信模型:針對用戶的郵件請求,發(fā)送 SMTP 建立與接收 SMTP 之間建立一個雙向傳送通道。接收 SMTP 可以是最終接收者也可以是中間傳送者。SMTP 命令由發(fā)送 SMTP 發(fā)出,由接收 SMTP 接收,而應(yīng)答則反方面?zhèn)魉汀?一旦傳送通道建立,SMTP 發(fā)送者發(fā)送 MAIL 命令指明郵件發(fā)送者。如果 SMTP 接收 者可以接收郵件則返回 OK 應(yīng)答。SMTP 發(fā)送者再發(fā)出 RCPT 命令確認(rèn)郵件是否接收到。 如果 SMTP 接收者接收,則返回 OK 應(yīng)答;如果不能接收到,則發(fā)出拒絕接收應(yīng)答(但 不中止整個郵件操作),
30、雙方將如此重復(fù)多次。當(dāng)接收者收到全部郵件后會接收到特 別的序列,如果接收者成功處理了郵件,則返回 OK 應(yīng)答。 SMTP 提供傳送郵件的機(jī)制,如果接收方與發(fā)送方連接在同一個傳送服務(wù)下時(shí),郵 件可以直接由發(fā)送方主機(jī)傳送到接收方主機(jī);或者,當(dāng)兩者不在同一個傳送服務(wù)下時(shí), 通過中繼 SMTP 服務(wù)器傳送。為了能夠?qū)?SMTP 服務(wù)器提供中繼能力,它必須擁有最終 目的主機(jī)地址和郵箱名稱。 ASP.NET 郵件收發(fā)系統(tǒng) MAIL 命令參數(shù)是回復(fù)路徑,它指定郵件從何處來;而 RCPT 命令的參數(shù)是轉(zhuǎn)發(fā)路徑 的,它指定郵件向何處去。向前路徑是源路徑,而回復(fù)路徑是返回路徑(它用于發(fā)生 錯誤時(shí)返回郵件)。 當(dāng)同
31、一個消息要發(fā)往不同的接收者時(shí),SMTP 遇到了向不同接收者發(fā)送同一份數(shù)據(jù) 的復(fù)制品的問題,郵件命令和應(yīng)答有一個比較奇怪的語法,應(yīng)答也有一個數(shù)字代碼。 在下面,例子中可以看到哪些使用實(shí)際的命令和應(yīng)答。完整的命令和應(yīng)答在第四節(jié)。 命令與應(yīng)答對大小寫不敏感,也就是說,命令和應(yīng)答可以是大寫,小寫或兩者的 混合,但這一點(diǎn)對用戶郵件名稱卻不一定是對的,因?yàn)橛械闹鳈C(jī)對用戶名大小寫是敏 感的。這樣 SMTP 實(shí)現(xiàn)中就將用戶郵箱名稱保留成初始時(shí)的樣子,主機(jī)名稱對大小寫不 敏感。 命令與應(yīng)答由 ASCII 字母表組成,當(dāng)傳送服務(wù)提供 8 位字節(jié)傳送通道,每 7 位字 符正確傳送,而最高位被填充為 0。當(dāng)指定一般的
32、命令或應(yīng)答格式后,參數(shù)會由一些類 似于語言的字符串表示出來,如“或“,這里尖括號表示這 是一種類似于語言的變量。 3.4 SMTP 協(xié)議的命令和應(yīng)答 3.4.1 SMTP 協(xié)議的命令 SMTP 命令是發(fā)送于 SMTP 主機(jī)之間的 ASC信息,可能使用到的命令如下表所示。 SMTP 協(xié)議命令 命令描述命令描述 DATA 開始信息寫作 RSET 重置會話,當(dāng)前傳輸 被取消 EXPN 驗(yàn)證給定的郵 箱列表是否存 在,擴(kuò)充郵箱 列表,也常被 禁用 SAML FROM 發(fā)送郵件到用戶終端 和郵箱 HELO 向服務(wù)器標(biāo)識 用戶身份,返 SEND FROM 發(fā)送郵件到用戶終端 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
33、回郵件服務(wù)器 身份 HELP 查詢服務(wù)器支 持什么命令, 返回命令中的 信息 SOML FROM 發(fā)送郵件到用戶終端 或郵箱 MAIL FROM 在主機(jī)上初始 化一個郵件會 話 TURN 接收端和發(fā)送端交換 角色 NOOP 無操作,服務(wù) 器應(yīng)響應(yīng) OK VRFY 用于驗(yàn)證指定的用戶/ 郵箱是否存在;由于 安全方面的原因,服 務(wù)器常禁止此命令 QUIT 終止郵件會話 RCPT TO 標(biāo)識單個的郵件接收 人;常在 MAIL 命令后 面可有多個 rcpt to : 3.4.2 SMTP 的應(yīng)答碼 對 SMTP 命令的響應(yīng)是多樣的,它確定了在郵件傳輸過程中請求和處理的同步,也 保證了發(fā)送 SMTP 知
34、道接收 SMTP 的狀態(tài)。每個命令必須有且只有一個響應(yīng)。 SMTP 響應(yīng)由三位數(shù)字組成,其后跟一些文本。數(shù)字幫助決定下一個應(yīng)該進(jìn)入的狀 態(tài),而文本對人是有意義的。三位的響應(yīng)已經(jīng)包括了足夠的信息,不用再閱讀文本, 文本可以直接拋棄或者傳遞給用戶。特別的是,文本是與接收和環(huán)境相關(guān)的,所以每 次接收到的文本可能不同。在附錄 E 中可以看到全部的響應(yīng)碼。正規(guī)的情況下,響應(yīng) 由下面序列構(gòu)成:三位的數(shù)字,一行文本和一個,或者也可以是一個多 行響應(yīng)。只有 EXPN 和 HELP 命令可以導(dǎo)致多行應(yīng)答,然而,對所有命令,多行響應(yīng)都 是允許的。 REPLY CODES BY FUNCTION GROUPS 50
35、0 格式錯誤,命令不可識別(此錯誤也包括命令 行過長) ASP.NET 郵件收發(fā)系統(tǒng) 501 參數(shù)格式錯誤 502 命令不可實(shí)現(xiàn) 503 錯誤的命令序列 504 命令參數(shù)不可實(shí)現(xiàn) 211 系統(tǒng)狀態(tài)或系統(tǒng)幫助響應(yīng) 214 幫助信息 220 服務(wù)就緒 221 服務(wù)關(guān)閉傳輸信道 421 服務(wù)未就緒,關(guān)閉傳輸信道(當(dāng)必須關(guān)閉時(shí),此應(yīng)答可以作為對任 何命令的響應(yīng)) 250 要求的郵件操作完成 251 用戶非本地,將轉(zhuǎn)發(fā)向 450 要求的郵件操作未完成,郵箱不可用(例如,郵箱忙) 550 要求的郵件操作未完成,郵箱不可用(例如,郵箱未找到,或不可訪問) 451 放棄要求的操作;處理過程中出錯 551 用戶
36、非本地,請嘗試 452 系統(tǒng)存儲不足,要求的操作未執(zhí)行 552 過量的存儲分配,要求的操作未執(zhí)行 553 郵箱名不可用,要求的操作未執(zhí)行(例如郵箱格式錯誤) 354 開始郵件輸入,以.結(jié)束 554 操作失敗 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 4 重要模塊設(shè)計(jì) 4.1 用戶登錄模塊 輸入用戶名和密碼、驗(yàn)證碼進(jìn)行身份驗(yàn)證,進(jìn)入郵件管理模塊。 4.2 用戶郵箱主頁 用戶郵箱主頁,郵箱的主要功能顯示 ASP.NET 郵件收發(fā)系統(tǒng) 4.3 收件箱 4.4 發(fā)件箱 4.5 刪除郵件 4.6 通訊錄 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 4.7 草稿箱 4.8 新建聯(lián)系人 4.9 寫信 ASP.NET 郵件收發(fā)系統(tǒng) 4
37、.10 郵件轉(zhuǎn)發(fā) 5 主要功能介紹 5.1 用戶登錄模塊 用戶輸入用戶名、密碼、驗(yàn)證碼,與數(shù)據(jù)庫信息進(jìn)行比對,如果輸入正確將登錄到郵 件系統(tǒng),反之會彈出錯誤信息。 string sql = “select * from userInfo where UserName=“+UserName +“ and password=“+passWord +“; SqlDataReader reader =con .GetList (sql ); if (reader.Read() this.Session“userName“ = UserName; 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) Response.Redi
38、rect(“Main/MainPage.aspx“); else string scriptText = “alert(用戶名或密碼錯誤!請聯(lián)系您所交流的 客服QQ或電話!);“; Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), scriptText, true); 。 5.2 框架的搭建 5.2.1 主要架構(gòu): 對不起,您的瀏覽器不支持框架 5.2.2 友情鏈接圖片 Log 及鏈接: var curIndex=0; var timeIntervar=1000; var arr
39、=new Array (); ASP.NET 郵件收發(fā)系統(tǒng) var Ihref=new Array (); arr 0=“/Image/local.jpg“; arr 1=“/Image/sina.jpg“; arr 2=“/Image/126.JPG“; arr 3=“/Image/yahoo.jpg“; arr 4=“/Image/qqq.jpg“; Ihref0=“#“; Ihref 1=“http:/ Ihref 2=“http:/ Ihref 3=“http:/ Ihref 4=“https:/ setInterval (changeImg,timeIntervar ); funct
40、ion changeImg() var obj=document.getElementById (“image“); var imgHref=document .getElementById (“imageHref“); for(var i=0;i 0) string scriptText = “alert(刪除成功);“; Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), scriptText, true); else string scriptText = “alert(刪除
41、失敗);“; Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), scriptText, true); 5.6 通訊錄 5.6.1 綁定通訊錄: int totalCount = 0; int pageSize = 15; int pageCount = 0; totalCount = conn.count(“select count(1) from contract “); if (totalCount % pageSize = 0) ASP.NET 郵件收發(fā)系統(tǒng) pageCou
42、nt = totalCount / pageSize; else pageCount = totalCount / pageSize + 1; this.GvPage.PageCount = pageCount; this.GvPage.PageIndex = pageIndex; this.GvPage.RecordCount = totalCount; string sql = “select * from contract “; gvContract.DataSource = conn.GetGrid_Pages_not(sql); gvContract.DataBind(); 5.6.
43、2 刪除聯(lián)系人: string sql = “delete from contract where CID in (“ + str + “)“; int res = conn.ExeSql(sql); 5.7 草稿箱 5.7.1 草稿箱的數(shù)據(jù)綁定: int totalCount = 0; int pageSize = 15; int pageCount = 0; totalCount = conn.count(“select count(1) from sentLetter where isDraf=Ture“); if (totalCount % pageSize = 0) pageCoun
44、t = totalCount / pageSize; else pageCount = totalCount / pageSize + 1; 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) this.GvPage.PageCount = pageCount; this.GvPage.PageIndex = pageIndex; this.GvPage.RecordCount = totalCount; ltCount.Text = totalCount.ToString(); string sql = “select * from sentLetter where isDraf=True“; gvDraf .
45、DataSource = conn.GetGrid_Pages_not(sql); gvDraf.DataBind(); 5.7.2 草稿箱數(shù)據(jù)的刪除: string sql = “delete from sentLetter where sentId in (“ + str + “)“; int res = conn.ExeSql(sql); 5.8 聯(lián)系人 添加聯(lián)系人: string str = “; StringBuilder insertSql = new StringBuilder(); insertSql.AppendFormat (“insert into contract va
46、lues(0,1,2,3,4,5,6)“,txtCName .Text .ToString (),this.rblSex .SelectedValue .ToString (),txtCAddr .Text .ToString (),txtCEmail .Text .ToString (),txtCQQ .Text .ToString (),txtCPhone .Text .ToString (),txtCRemark .Text .ToString (); int res = conn.ExeSql(insertSql.ToString(); if (res 0) str = “alert(
47、恭喜添加聯(lián)系人成功);“; Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), str, true); Refresh(); else str = “alert(添加聯(lián)系人失敗);“; Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), str, true); ASP.NET 郵件收發(fā)系統(tǒng) 5.9 郵件轉(zhuǎn)發(fā) 郵件的轉(zhuǎn)發(fā),根據(jù)參數(shù)的傳遞,有草稿箱 Response.Red
48、irect(“writter.aspx?ID=“ + ID+“、收件箱 Response.Redirect(“writter.aspx?ID=“ + ID + “ 、發(fā)件箱 Response.Redirect(“writter.aspx?ID=“ + ID + “、刪除箱 Response.Redirect(“writter.aspx?ID=“ + ID+“的郵件進(jìn)行轉(zhuǎn)發(fā)。轉(zhuǎn)發(fā)時(shí) 進(jìn)行判斷,獲取數(shù)據(jù): if (Request.QueryString“Opt“ != null) Opt = Request.QueryString“Opt“.ToString(); switch (Opt) cas
49、e “draf“: sentLetterBind(); break; case “getLetter“: getLetterBind(); break; case “sentLetter“: sentLetterBind(); break; case “deleteLetter“: getLetterBind(); break; default: Refresh(); break; sentLetterBind(): string drafSql = “select * from sentLetter where sentId=“+id ; getLetterBind(): string dr
50、afSql = “select * from getLetter where ID=“ + id; 綁定數(shù)據(jù): SqlDataReader dataReader = conn.GetList(drafSql); if (dataReader.Read() txtSubject.Text = dataReader“getTitle“.ToString(); d_content.Value = “-原始文件- “; d_content.Value += dataReader“getContent“.ToString(); 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 6 數(shù)據(jù)庫設(shè)計(jì) 6.1 登錄系統(tǒng) CREATE
51、 TABLE dbo.userInfo( UserId int IDENTITY(1,1) NOT NULL, UserName varchar(50) COLLATE Chinese_PRC_CI_AS NULL, password varchar(50) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT PK_userInfo PRIMARY KEY CLUSTERED ( UserId ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLO
52、W_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY 6.2 收件箱 CREATE TABLE dbo.getLetter( ID int IDENTITY(1,1) NOT NULL, getTitle varchar(50) COLLATE Chinese_PRC_CI_AS NULL, getContent text COLLATE Chinese_PRC_CI_AS NULL, getTime datetime NULL, getStatus bit NULL, getter varchar(50) COLLA
53、TE Chinese_PRC_CI_AS NULL, senter varchar(50) COLLATE Chinese_PRC_CI_AS NULL, getFile varchar(50) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT PK_getLetter PRIMARY KEY CLUSTERED ( ID ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
54、= ON) ON PRIMARY ) ON PRIMARY TEXTIMAGE_ON PRIMARY 6.3 發(fā)件箱 CREATE TABLE dbo.sentLetter( sentId int IDENTITY(1,1) NOT NULL, sentTitle varchar(50) COLLATE Chinese_PRC_CI_AS NULL, sentContent text COLLATE Chinese_PRC_CI_AS NULL, ASP.NET 郵件收發(fā)系統(tǒng) sentTime datetime NULL, sentStatus bit NULL, senter varchar
55、(50) COLLATE Chinese_PRC_CI_AS NULL, isDraf bit NULL CONSTRAINT DF_sentLetter_isDraf DEFAULT (0), getter varchar(50) COLLATE Chinese_PRC_CI_AS NULL, sentFile varchar(50) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT PK_sentLetter PRIMARY KEY CLUSTERED ( sentId ASC )WITH (PAD_INDEX = OFF, STATISTICS_NOR
56、ECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY TEXTIMAGE_ON PRIMARY 6.4 聯(lián)系人 CREATE TABLE dbo.userInfo( UserId int IDENTITY(1,1) NOT NULL, UserName varchar(50) COLLATE Chinese_PRC_CI_AS NULL, password varchar(50) COLLATE Chinese_PRC_CI_AS NU
57、LL, CONSTRAINT PK_userInfo PRIMARY KEY CLUSTERED ( UserId ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY ) ON PRIMARY 7 結(jié)論 這次編寫的郵件收發(fā)管理系統(tǒng),主要是郵件的發(fā)送的功能。在熟悉了專門用于發(fā) 送接收郵件的 SMTP 協(xié)議和 POP3 協(xié)議以及 RFC 規(guī)定的郵件的格式的基礎(chǔ)上,從實(shí)際使 用情況做
58、起,一步步的與服務(wù)器進(jìn)行交互操作,最終實(shí)現(xiàn)發(fā)送接收普通郵件以及附件 的功能??傊ㄟ^這次的編程,使我對網(wǎng)絡(luò)編程有了一個很好的認(rèn)識和鍛煉,也使 我對.NET 這一語言的掌握程度又上了一個新臺階,雖然編出來的軟件不能和功能強(qiáng)大 的各種郵件收發(fā)管理系統(tǒng)相提并論,但是相信它簡單,易操作性,和很多強(qiáng)大的軟件 比起來,更多了幾分實(shí)用性。以后的日子,隨著我技術(shù)的提高和思想的成熟,我一定 會把它做的更好,更趨近于完美。 長沙航空職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì) 8 參考文獻(xiàn) 1 尚俊杰ASP.NET 程序設(shè)計(jì)M北京:清華大學(xué)出版社,北京交通大學(xué)出版 社2004 2 劉振巖基于.NET 的 Web 程序設(shè)計(jì)M電子工業(yè)出版
59、社2006 3 Dino Esposito 著,施平安 譯ASP.NET 2.0 技術(shù)內(nèi)幕北京:清華大學(xué)出版 社2006 4Kouresh Ardestani 著,張哲峰 譯高效掌握 ADO.NETC#編程篇北京:清華 大學(xué)出版社2003 5余金山ASP.NET 2.0+SQL Server 2005 企業(yè)項(xiàng)目開發(fā)與實(shí)戰(zhàn)北京:電子工業(yè) 出版社2008 6Jim Arlow,IIa NeustadtUML 2 and the Unified Process:PracticalObject- Oriented Analysis and Design,Second Edition北京:人民郵電出版社
60、2006 7陳萱華如何利用 ASP.NET 技術(shù)訪問數(shù)據(jù)庫計(jì)算機(jī)與現(xiàn)代化2003 (2) 9 致謝 三年的大學(xué)生活在這個季節(jié)即將劃上一個句號,而于我的人生卻只是一個逗號,我 將面對又一次征程的開始。我的整個畢業(yè)設(shè)計(jì)從 3 月中旬正式開始,感謝我的導(dǎo)師, 謝謝你在我不知道解決難題的時(shí)候給予我的幫助,指導(dǎo)我完成畢業(yè)設(shè)計(jì)。感謝我的輔 導(dǎo)員,無論在學(xué)習(xí)還是生活上給我們的無微不至的關(guān)懷,讓我們感受到集體的溫暖。 感謝我的朋友們,一起努力奮斗的走過大學(xué)生活的朋友們,讓我們在這個陌生的地市 不寂寞,謝謝你們在我不懂的時(shí)候告訴我怎么做。感謝長沙航空職業(yè)技術(shù)學(xué)院,為我 們提供了良好的學(xué)習(xí)環(huán)境和生活環(huán)境,讓我們學(xué)會技術(shù)技巧和結(jié)識了五湖四海的朋友 們。感謝湖南博源科技有限公司的同事和領(lǐng)導(dǎo)們,讓我在貴公司實(shí)習(xí),學(xué)習(xí)項(xiàng)目開發(fā) 的整個過程,讓我懂得我和企業(yè)的距離。 最后再一次感謝所有在畢業(yè)設(shè)計(jì)中曾經(jīng)幫助過我的良師益友和同學(xué),以及在設(shè)計(jì)中 被我引用或參考的論著作者,謝謝你們。
- 溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護(hù)納稅人的合法權(quán)益)
- 2024《文物保護(hù)法》全文解讀學(xué)習(xí)(加強(qiáng)對文物的保護(hù)促進(jìn)科學(xué)研究工作)
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見問題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說話方式
- 汽車銷售績效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩