• /  24
  • 下載費用: 9.90積分  

JavaEE編程技術源代碼和課件第九章 Java Mail 編程.ppt

'JavaEE編程技術源代碼和課件第九章 Java Mail 編程.ppt'
第八章 Java Mail 編程JavaMail基礎知識發送簡單郵件 發送SMTP身份認證的郵件 接收郵件 郵件附件的處理 本章主要內容JavaMail基礎知識 √發送簡單郵件 發送SMTP身份認證的郵件 接收郵件 郵件附件的處理 常見電子郵件協議 SMTP (Simple Mail Transfer Protocol,簡單郵件傳輸協議) POP(Post Office Protocol,郵局協議) IMAP(Internet Message Access Protocol,Internet 消息訪問協議) MIME(Multipurpose Internet Mail Extensions,多用途Internet 郵件擴展標準)不是郵件傳輸協議,它只定義了需要傳輸的消息、附件及其他類型數據的格式。 Java Mail體系可以分為三層:抽象層Internet 郵件實現層協議實現層 Java Mail抽象層:該層定義了用于郵件處理功能的抽象類、接口和抽象方法,所有的郵件系統都支持這些功能,它獨立于供應商和協議消息。抽象層位于Java Mail 頂級包(即javax.mail)內。 Internet 郵件實現層:該層實現了部分抽象層元素,它遵循Internet 標準―RFC822和MIME。Internet 郵件實現層所定義的類和接口大多位于javax.mail.internet 包內。協議實現層:該層由服務提供商實現對特定協議的支持,如SMTP、POP、IMAP 和NNTP。Sun 為開發者提供了很完備的一組協議的支持。核心Java Mail API 可以分為兩部分,一部分由七個主要對象組成:Session、Message、Address、Authenticator、Transport、Store 和Folder,利用這些對象可以完成包括發送消息、檢索消息、刪除消息、認證、回復消息、轉發消息、管理附件、處理基于HTML 文件格式的消息及搜索或過濾郵件列表等任務 核心Java Mail API 的另一部分的主要接口和類包括Part、Message、Bodypart、Multipart、MimePart、MimeMessage、MimiBodypart 和MimeMultipart,可以用這些類和接口完成電子郵件的閱讀、撰寫等任務。 JavaMail基礎知識發送簡單郵件 √發送SMTP身份認證的郵件 接收郵件 郵件附件的處理 程序8-2:SendMail.java(片斷)try{ Properties props = new Properties(); Session sendMailSession; Store store; Transport transport; sendMailSession = Session.getInstance(props, null); props.put("mail.smtp.host", host); Message newMessage = new MimeMessage(sendMailSession); newMessage.setFrom(new InternetAddress(request.getParameter("from"))); newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress ( request.getParameter ("to"))); newMessage.setSubject(request.getParameter("subject")); newMessage.setSentDate(new Date()); newMessage.setText(request.getParameter("text")); Transport.send(newMessage); ////顯示發送成功的提示 out.println(" the Email send sucess!");Java Mail API 的中文問題。如果開發者使用setSubject()方法直接設定中文的主題或者使用setText()方法直接指定中文內容,那么在使用Outlook 等客戶端軟件查看郵件時客戶有可能看到的將是一團亂碼。解決方案?只需要指定郵件主題和郵件正文的字符集為“ISO-8859-1” 即可。 JavaMail基礎知識 發送簡單郵件 發送SMTP身份認證的郵件 √接收郵件 郵件附件的處理 為了防止惡意用戶利用SMTP 服務器進行發送垃圾郵件等破壞活動,SMTP 服務器一般需要身份驗證。只有通過了身份驗證的用戶才有權利利用SMTP 服務器發送郵件。 javaMail 用類javax.mail.Authenticator來進行用戶認證。驗證信息需要通過Session 傳給郵件服務器,所以Session 對象的getInstance 有以下的變形static Session getInstance(Properties prop,Authenticator auth);static Session getDefaultInstance(Properties prop,Authenticator auth);其中的Authenticator 負責密碼校驗。如果不需要驗證身份,就用null 做第二個參數,或者直接用單參數的getInstance。如果Session 是需要密碼的,那么Session 會自動發出如下調用javax.mail.PasswordAuthentication getPasswordAuthentication();PasswordAuthentication 只是一個包裝類,里面包了用戶名和密碼。因此如果要實現SMTP認證的郵件發送,必須首先自己定義一個繼承javax.mail.Authenticatior的類。 程序8-4:Auth.javaimport javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class Auth extends Authenticator { String username=""; String password=""; public Auth(String username,String password){ this.username=username; this.password=password; } public PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication( username, password); }}程序8-5: sendAuthmail.java(片段)//初始。省略部分。身份認證的郵件 接收郵件 郵件附件的處理 √發送附件 發送附件非常像轉發消息,程序開發人員需要建立各部分以組成完整消息,完成消息正文后,即開始添加其他部件,其中每個 DataHandler 都代表附件,而不是轉發消息情況下的共享處理程序。如果從文件中讀附件,附件的數據源是 FileDataSource。而如果從 URL 中讀時,附件的數據源是 URLDataSource。一旦存在 DataSource,只要先把它傳遞給 DataHandler 構造器,最后再用 setDataHandler() 把它附加到 BodyPart。假定要保留附件的原始文件名,最終要做的是用 BodyPart 的 setFileName() 方法設置與附件相關的文件名。程序8-12:SendAttachmentMail.java(片段) // 正文部分 BodyPart messageBodyPart = new MimeBodyPart(); // Fill the message String contentMessage=request.getParameter("body"); messageBodyPart.setText(contentMessage); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); // Part two is attachment String filename=request.getParameter("thefile"); messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // Put parts in message mimeMsg.setContent(multipart); // Send the message Transport.send(mimeMsg); 接收附件 從郵件中獲取附件比發送它們要困難,因為 MIME 沒有簡單的關于附件的概念。當消息包含附件時,消息的內容是個 Multipart 對象。接著,開發者需要處理每個 Part,獲取主要內容和附件。標有從 part.getDisposition() 獲得的 Part.ATTACHMENT 配置(disposition)的部件(Part)無疑就是附件。但是,沒有配置(及一個非文本 MIME 類型)和帶 Part.INLINE 配置的部件也可能是附件。當配置要么是 Part.ATTACHMENT,要么是 Part.INLINE 時,這個消息部件的內容就能被保存。只要用 getFileName() 和 getInputStream() 就能分別得到原始文件名和輸入流。 程序8-13: ReceiveMimeMail.java(片段) Multipart mp = (Multipart)message[nid].getContent(); String szFile=""; File ffile; //String szpath=""; for (int i=0,n=mp.getCount(); i<n; i++) { Part part = mp.getBodyPart(i); String szMbp=part.getContentType(); System.out.println("IDX:" + i+ " :類型" + szMbp); String disposition = part.getDisposition(); if((disposition != null) && ((disposition.equals(Part.ATTACHMENT)||(disposition.equals(Part.INLINE))))){ //創建一個文件,并從輸入流中讀取字節,,存入到文件中 szFile=MimeUtility.decodeText(part.getFileName()); String fullpath=filepath + szFile; ffile = new File(fullpath); FileOutputStream outfile = new FileOutputStream(ffile); BufferedInputStream br = new BufferedInputStream(part.getInputStream());BufferedOutputStream bw = new BufferedOutputStream(outfile); int b; while ((b = br.read()) != -1) bw.write(b); bw.flush(); szAttach=szAttach+"" +fullpath ; }else if(disposition= =null){ MimeBodyPart mbp = (MimeBodyPart)part; if (mbp.isMimeType("text/plain")||mbp.isMimeType("text/html")){ //普通正文 szBody=mbp.getContent().toString(); szBody=szBody.replaceAll("\r\n",""); }else if(mbp.isMimeType("multipart/alternative")) { //HTML正文 szBody=((Multipart)part.getContent()).getBodyPart(0).getContent().toString(); } } } }
關 鍵 詞:
編程 技術 java 源代碼 第九 mail javaee
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:JavaEE編程技術源代碼和課件第九章 Java Mail 編程.ppt
鏈接地址: http://www.476824.live/p-51617469.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 2019买马12生肖号码图 江西快三基本走势 山西快乐十分爱乐彩 十一选五每期必赚20元 11选五中奖规则 极速11选五哪里开奖 快乐10分中奖 双色球论坛 广西快乐双彩最牛网开奖号码 炒股 APP