freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于java的郵件系統(tǒng)設(shè)計(jì)畢業(yè)論文-資料下載頁(yè)

2025-06-23 15:07本頁(yè)面
  

【正文】 中又引用了其他的內(nèi)嵌資源。對(duì)于這種最復(fù)雜的電子郵件。 復(fù)雜郵件的結(jié)構(gòu)圖,如果要在郵件中要添加附件,就必須將整封郵件的MIME類型定義為multipart/mixed;如果要在HTML格式的正文中引用內(nèi)嵌資源,那就要定義multipart/related類型的MIME消息;如果普通文本內(nèi)容與HTML文本內(nèi)容共存,那就要定義multipart/alternative類型的MIME消息。 其他頭字段除了ContentType頭字段之外,MIME協(xié)議中還定義ContentLocation、Content TransferEncoding、ContentDisposition、ContentID、ContentBase等幾個(gè)重要的頭字段,這幾個(gè)頭字段需要與Contenttype頭字段配合使用,它們的作用如下:(1) ContentTransferEncoding頭字段ContentTransferEncoding頭字段用于指定MIME消息體中的內(nèi)容所采用的郵件編碼方式。(2) ContentDisposition頭字段ContentDisposition頭字段用于指定郵件閱讀程序處理數(shù)據(jù)內(nèi)容的方式,有inline和attachment兩種標(biāo)準(zhǔn)方式,inline表示直接處理,而attachment表示當(dāng)做附件處理。如果將ContentDisposition設(shè)置為attachment,在其后還可以指定filename屬性,如下所示:ContentDisposition: attachment。 filename=上面的MIME頭字段表示MIME消息體的內(nèi)容為郵件附件,附件名。(3) ContentID頭字段ContentID頭字段用于為“multipart/related”組合消息中的內(nèi)嵌資源指定一個(gè)唯一標(biāo)識(shí)號(hào),在HTML格式的正文中可以使用這個(gè)唯一標(biāo)識(shí)號(hào)來(lái)引用該內(nèi)嵌資源。例如,假設(shè)將一個(gè)表示內(nèi)嵌圖片的MIME消息的ContentID頭字段設(shè)置為如下形式:ContentID: it315logo_gif那么,在HTML正文中就需要使用如下HTML語(yǔ)句來(lái)引用該圖片資源:img src=cid:it315logo_gif 注意,在引用ContentID頭字段標(biāo)識(shí)的內(nèi)嵌資源時(shí),要在資源的唯一標(biāo)識(shí)號(hào)前面加上“cid:”,以說(shuō)明要采用唯一標(biāo)識(shí)號(hào)對(duì)資源進(jìn)行引用。 編輯一封復(fù)雜郵件的實(shí)現(xiàn)通過(guò)對(duì)郵件格式了解,可知如果要在郵件中要添加附件,就必須將整封郵件的MIME類型定義為multipart/mixed;如果要在HTML格式的正文中引用內(nèi)嵌資源,那就要定義multipart/related類型的MIME消息;如果普通文本內(nèi)容與HTML文本內(nèi)容共存,那就要定義multipart/alternative類型的MIME消息。所以要編輯一封復(fù)雜的郵件涉及到各種MIME類型的組合,為了方便編寫(xiě),這次設(shè)計(jì)編輯固定一種類型組合,如圖示,就是不要multipart/alternative類型,因?yàn)楝F(xiàn)在幾乎所以的閱讀程序都支持HTML格式,所以沒(méi)必要添加這種類型,還有就是不論郵件有沒(méi)有內(nèi)嵌資源、附件,本系統(tǒng)編寫(xiě)郵件都會(huì)按照這樣的嵌套類型組合,只是沒(méi)有內(nèi)嵌資源或附件就不用把它添加到郵件而已。 項(xiàng)目中編輯郵件固定結(jié)構(gòu)圖編寫(xiě)這樣一個(gè)類型的郵件的實(shí)現(xiàn)代碼如下//創(chuàng)建郵件public MimeMessage createMessage(Session session) { MimeMessage msg = new MimeMessage(session)。 try { (new InternetAddress(from))。(new Address[] { new InternetAddress(from) })。 //設(shè)置郵件的發(fā)件人 if(!().equals())(, (()))。 //設(shè)置郵件的抄送人 if (!().equals())(, (()))。 //設(shè)置郵件的密送 if (!().equals())(, (()))。 //設(shè)置郵件的主題 if (!().equals()) (subject)。 //設(shè)置郵件發(fā)送時(shí)間 (new Date())。 //設(shè)置郵件MIME類型定義為multipart/mixed MimeMultipart msgMulPart = new MimeMultipart(mixed)。 (mixed)。 (msgMulPart)。 //判斷是否有附件,有附件調(diào)用addAttachment()添加附件,可以添加多個(gè)附件 if (attnames != null amp。amp。 () != 0) addAttachment(msgMulPart)。 //addContent()是添加郵件multipart/related類型的部分 addContent(msgMulPart)。 ()。 } catch (AddressException e) {FacesContext context = ()。 (null, new FacesMessage( ,郵件地址無(wú)效, null))。 ()。 } catch (MessagingException e) {FacesContext context = ()。(null, new FacesMessage(,發(fā)送失敗,請(qǐng)檢查郵件地址是否有效, null))。 ()。 ()。 } return msg。 } //添加郵件multipart/related類型的部分 public void addContent(MimeMultipart msgMulPart) { MimeBodyPart content = new MimeBodyPart()。 MimeBodyPart htmPart = new MimeBodyPart()。 //設(shè)置郵件MIME類型定義為multipart/related MimeMultipart bodyMup = new MimeMultipart(related)。 //選正文中對(duì)應(yīng)內(nèi)嵌資源的URL和它的文件名關(guān)聯(lián),方便后面的替換工作 setRelatedList()。 try { //設(shè)置郵件正文為超文本,其中cidReplace(text),是用來(lái)把正文的內(nèi)嵌資源的url替換換為指定CID (cidReplace(text),text/html。charset=gbk)。 (htmPart)。 (related)。 //判斷是需要添加內(nèi)嵌資源,可以添加多個(gè)資源,addPicPart()是用來(lái)添加內(nèi)嵌資源的 if (getPicUrls().size() != 0) addPicPart(bodyMup)。 (bodyMup)。 (content)。 } catch (MessagingException e1) { ()。 } }//添加內(nèi)嵌資源 public void addPicPart(MimeMultipart msgMulPart) { for (int i = 0。 i ()。 i++) { MimeBodyPart picBodyPart = new MimeBodyPart()。 //通過(guò)指定文件目錄讀取資源,嵌入郵件 DataSource picds = new FileDataSource(picPath+ (i))。 DataHandler picdh = new DataHandler(picds)。 try { (picdh)。 //設(shè)定郵件內(nèi)嵌資源的CID,CID要和正文替換后的CID對(duì)應(yīng) (ContentID, + (i) + i+ )。 (picBodyPart)。 } catch (MessagingException e) { ()。 } } } //添加郵件附件 public void addAttachment(MimeMultipart msgMulPart) { String[] attList = (,)。 for (int i = 0。 i 。 i++) { MimeBodyPart mbp = new MimeBodyPart()。 //通過(guò)指定文件目錄讀取資源,嵌入郵件,當(dāng)做附件DataHandler dh = new DataHandler(new FileDataSource(D:/mail/attachment/ + attList[i]))。 try {//設(shè)置附件的名字,注意這一步是必須的,如果不設(shè)定名字,不把它當(dāng)成附件 ((attList[i]))。 (dh)。 (mbp)。 } catch (UnsupportedEncodingException e) { ()。 } catch (MessagingException e) { } } } //用來(lái)替換內(nèi)嵌資源的url為指定cidpublic String cidReplace(String text) { String str = text。 for (int i = 0。 i ()。 i++) {str =((i), cid: + (i) + i)。 } return str。 } //選正文中對(duì)應(yīng)內(nèi)嵌資源的URL和它的文件名關(guān)聯(lián),方便后面的替換工作public void setRelatedList() { picUrls = new ArrayListString()。 Pattern p1 = Pattern .pile(/webmail/resources/uploadPic/([^\\\\/:\\*\\?]*\\.(jpg|JPG|png|PNG|gif|GIF|bmp|BMP|JPEG|jpeg)))。 Matcher m1 = (text)。 while (()) { (())。 } picNames = new ArrayListString()。 Pattern p2 = Pattern .pile(/webmail/resources/uploadPic/([^\\\\/:\\*\\?]*\\.(jpg|JPG|png|PNG|gif|GIF|bmp|BMP|JPEG|jpeg)))。 Matcher m2 = (text)。 while (()) { ((1))。 } }上面是本系統(tǒng)用來(lái)構(gòu)建固定格式的代碼,只要使用JavaMail API 來(lái)創(chuàng)建郵件。請(qǐng)注意灰色背景那兩句代碼,為什么多了替換CID這一步。下面對(duì)此進(jìn)行說(shuō)明一下。本次開(kāi)發(fā)的是應(yīng)該WebMail系統(tǒng),跟傳統(tǒng)的客戶端軟件不一樣,比如你要發(fā)送帶附件和內(nèi)嵌圖片的郵件,傳統(tǒng)的客戶端軟件只需指定資源的路徑,就可以直接構(gòu)建郵件。WebMail系統(tǒng)不一樣,用戶必須先要把這些資源上傳到WebMail系統(tǒng)的服務(wù)器上,這樣WebMail系統(tǒng)程序才能找到資源來(lái)構(gòu)建郵件,因?yàn)閃ebMail系統(tǒng)的程序是運(yùn)行在服務(wù)器上而不是想傳統(tǒng)的郵件客戶端是運(yùn)行在pc上。系統(tǒng)要求提供可視化的編輯郵件。所以當(dāng)你上傳附件和嵌入圖片的時(shí)候,編輯環(huán)境也要求顯示出這些附件和圖片,這應(yīng)該如何解決。首先,說(shuō)附件的解決方法,只要把附件上傳到指定的文件夾了,并記住附件的名字就可以找到附件的資源,這樣既可以構(gòu)建帶附件的郵件。所以在后臺(tái)構(gòu)建郵件時(shí)只要拿到這些附件的名字就可以找到相關(guān)資源,無(wú)需進(jìn)行其他處理。如何讓頁(yè)面可以看到上傳附件的信息,其實(shí)也挺簡(jiǎn)單。只要上傳完文件后回傳文件名給頁(yè)面,頁(yè)面使用JS代碼根據(jù)文件名動(dòng)態(tài)的顯示出附件的信息就可以了。提交時(shí)把有附件名組成的字符串傳給后臺(tái),程序根據(jù)字符串就可以找那些附件的名稱,幾可以構(gòu)建帶附件的郵件。接下來(lái)是討論的重點(diǎn),同樣把圖片上傳到指定文件夾里,不過(guò),這個(gè)文件夾一定要在項(xiàng)目的目錄下。如何讓它顯示在頁(yè)面上的html編輯器里呢?其實(shí),很簡(jiǎn)單只要給html編輯器加一段html代碼就行img src=/webmail/resources /uploadPic/圖片文件名/。后臺(tái)如何找到相關(guān)的文件能,這很簡(jiǎn)單只需分析Html編輯器編輯的html代碼找出img src=/webmail/resources/ uploadPic /圖片文件名格式的代碼就可以分析文件的名字,找到相關(guān)的資源。接著重要的問(wèn)題要來(lái)了,通過(guò)對(duì)郵件格式的了解要發(fā)嵌入資源的郵件,需要通過(guò)設(shè)定ContentID使郵件html正文跟內(nèi)嵌資源關(guān)聯(lián)起來(lái)。就是要內(nèi)嵌資源設(shè)定的ContentID:xxxx;html正文與它關(guān)聯(lián)的圖片標(biāo)簽要變?yōu)檫@樣img src=cid:xxxx/這樣郵件才能被其他客戶端解析。所以在后臺(tái)要想辦法替換把src的值替換成對(duì)應(yīng)cid。代碼中灰色背景中得方法就是用來(lái)處理這個(gè)步驟。 發(fā)送接收郵件的實(shí)現(xiàn)通過(guò)上面討論,我們已經(jīng)可以可視化的構(gòu)造一封復(fù)雜的郵件,接下討論如何發(fā)送一封構(gòu)建好的郵件,和接收郵件。其實(shí)因?yàn)橛蠮avaMail 發(fā)送和接收郵件是非常簡(jiǎn)單。下面只是給出相關(guān)例子,不做深入的討論。發(fā)送的例子代碼Properties props = new Pro
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1