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

正文內容

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

2025-06-23 15:07本頁面
  

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