程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java中應用JavaMail多發郵件及郵件的驗證和附件完成

Java中應用JavaMail多發郵件及郵件的驗證和附件完成

編輯:關於JAVA

Java中應用JavaMail多發郵件及郵件的驗證和附件完成。本站提示廣大學習愛好者:(Java中應用JavaMail多發郵件及郵件的驗證和附件完成)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中應用JavaMail多發郵件及郵件的驗證和附件完成正文


多發和用戶驗證
上面先來引見若何完成將郵件發送給多個收件人和若何應用Authenticators對象完成用戶驗證。  
指定收件人的時刻,我們可以有兩種辦法來指定。上篇博客是在發送郵件的時刻暫時指定收件人,其實還可以在Message對象中指定。

message.addRecipient(Message.RecipientType.TO,new InternetAddress(” [email protected] ”)); 

         這個只是發送給一個收件人而言,然則有多個收件人若何處置?異樣有兩種辦法來處置。
          1、在發送郵件時Transport的sendMessage()辦法指定收件人時是應用數組來指定收件人的,這個時刻我們只須要多添加收件人地址便可完成。
          2、在應用Message對象來添加收件人我們可使用InternetAddress對象的parse(String string)辦法,該辦法前往的是InternetAddress數組,如許異樣可以完成發送給多個收件人。
 
         我們曉得在停止JavaMail開辟時我們必需要停止受權校驗,受權校驗目標是阻攔別人隨意率性亂發郵件,削減渣滓郵件的發生。
我們可以在獲得Session對象的時刻停止校驗。在Session對象中有這兩個辦法:

  • getDefaultInstance(prop,authenticator),
  • getInstance(prop,authenticator),

這兩個辦法都有一個配合的參數authenticator,該參數是一個Authenticator對象。Authenticator對象就是贊助用戶停止信息驗證的,完成受權校驗。Authenticator對象中有getPasswordAuthentication()辦法,該辦法前往前往一個PasswordAuthentication對象,PasswordAuthentication對象中有兩個辦法:getPassword()、getUserName()也就說我們將password、userName封裝在PasswordAuthentication對象,經由過程這兩個辦法便可以獲得用戶名和暗碼了。便可完成用戶信息驗證。

 實例以下:

public class JavaMail_02 { 
  public static void main(String[] args) throws Exception { 
    Properties props = new Properties(); 
    props.setProperty("mail.smtp.auth", "true"); 
    props.setProperty("mail.transport.protocol", "smtp"); 
    props.setProperty("mail.host", "smtp.163.com"); 
     
    Session session = Session.getInstance(props, 
        new Authenticator(){ 
          protected PasswordAuthentication getPasswordAuthentication(){ 
            return new PasswordAuthentication("********","*********"); 
          } 
    }); 
    session.setDebug(true); 
     
    Message msg = new MimeMessage(session); 
    msg.setFrom(new InternetAddress("[email protected]")); 
     
    msg.setSubject("JavaMail測試法式..."); 
    msg.setContent("<span style='color:red'>這是我的第二個javaMail測試法式....</span>", "text/html;charset=gbk"); 
    //msg.setRecipients(RecipientType.TO, new Address[]{new InternetAddress("1111@@qq.com"),new InternetAddress("[email protected]")}); 
    msg.setRecipients(RecipientType.TO, InternetAddress.parse("[email protected],[email protected]")); 
     
    Transport.send(msg); 
  } 
 
} 

 

帶有圖片和附件的郵件
在現實的電子郵件中我們普通都邑觸及到加倍龐雜電子郵件構造,例若有附件、郵件注釋外面包括圖片、包括歌曲等等,在這個時刻我們就必需要對郵件的構造有著很清楚的熟悉。在停止復合郵件開辟之前須要對復合郵件的構造有必定的懂得。

       下面這幅圖片展現了一封復合郵件的全體構造,我們可以看出一封龐雜的電子郵件由多個部門構成。它有一個頭部和注釋,然則注釋其實不是像之前那末簡略了,而是由幾個部門構成。頭部須要起到一個指導的感化,它須要解釋注釋須要應用甚麼樣的分隔符來離開,注釋幾個部門之間應用甚麼樣的組合關系。關於下面電子郵件它由三個部門構成,每部門都有本身頭和體,第一部門也由兩個部門構成。
 
         復合郵件的組合關系:
         注釋部門之間有多種組合關系。組合關系以下圖:

alternative:選擇關系。下面的純文本和超文本之間就是一種選擇關系。
        related:聯系關系關系。假設下面的超文本注釋是展現一幅圖片,那末我們在發送郵件的時刻必需要將這幅圖片包括到郵件中,也就是所謂的內嵌資本,這個內嵌資本是給超文本用的。所以他們二者之間是一個聯系關系關系。
        mixed:混雜關系。在純文本、超文本和內嵌資本構成一個全體和,他們與附件並列著,二者之間就是一個混雜關系了。
 
        復合郵件組織構造的API:

  MimeMessage類表現整封電子郵件。
        MimeBodyPart類表現郵件的一個MiME新聞。
        MimeMultipart類表現一個由多個MIME新聞組分解的組合MIME新聞。
 
        上面一個實例:該郵件外面包括兩個附件、注釋部門包含純文本和超文本,超文本表現展現一張圖片。源代碼以下:

public class JavaMail_03 { 
 
  public static void main(String[] args) throws Exception { 
    Properties props = new Properties(); 
    props.setProperty("mail.smtp.auth", "true"); 
    props.setProperty("mail.transport.protocol", "smtp"); 
    props.setProperty("mail.host", "smtp.163.com"); 
    Session session = Session.getInstance(props, 
        new Authenticator(){ 
          protected PasswordAuthentication getPasswordAuthentication(){ 
            return new PasswordAuthentication("*****","******"); 
          } 
    }); 
     
    Message message = new MimeMessage(session); 
    message.setSubject("第三個JavaMail測試法式"); 
    message.setFrom(new InternetAddress("\""+MimeUtility.encodeText("陳明")+"\"<[email protected]>")); 
    message.setRecipients(RecipientType.TO, new Address[]{new InternetAddress("[email protected]")}); 
     
    //郵件注釋 
    MimeMultipart multipart = new MimeMultipart("mixed"); 
    message.setContent(multipart); 
    /* 
     * 創立郵件的內容 
     * 包含一個郵件注釋和兩個附件 
     */ 
    MimeBodyPart content = new MimeBodyPart();   //郵件內容 
    MimeBodyPart attch1 = new MimeBodyPart();   //附件1 
    MimeBodyPart attch2 = new MimeBodyPart();   //附件2 
    //將郵件內容添加到multipart中 
    multipart.addBodyPart(content); 
    multipart.addBodyPart(attch1); 
    multipart.addBodyPart(attch2); 
     
    //設置附件1 
    DataSource ds1 = new FileDataSource("G:\\電子書\\oracle口令.txt"); 
    DataHandler dh1 = new DataHandler(ds1); 
    attch1.setDataHandler(dh1); 
    attch1.setFileName("oracle.txt"); 
    //設置附件2 
    DataSource ds2 = new FileDataSource("G:\\電子書\\賬號.txt"); 
    DataHandler dh2 = new DataHandler(ds2); 
    attch2.setDataHandler(dh2); 
    attch2.setFileName(MimeUtility.encodeText("賬號.txt")); 
    /* 
     * 設置內容(注釋)---是一個龐雜體 
     * 包含HTML注釋和顯示一張圖片 
     */ 
    MimeMultipart bodyMultipart = new MimeMultipart("related"); 
    content.setContent(bodyMultipart); 
    //結構注釋 
    MimeBodyPart htmlBody = new MimeBodyPart(); 
    MimeBodyPart gifBody = new MimeBodyPart(); 
    bodyMultipart.addBodyPart(htmlBody); 
    bodyMultipart.addBodyPart(gifBody); 
   
    //設置圖片 
    DataSource gifds = new FileDataSource("F:\\圖片\\圖片\\4.jpg"); 
    DataHandler gifdh = new DataHandler(gifds); 
    gifBody.setDataHandler(gifdh); 
    gifBody.setHeader("Content-ID", "<"+gifds.getName()+">"); 
    //gifBody.setHeader("Content-Location", "http://www.itcast.cn/logo.gif"); 
    //設置HTML注釋 
    htmlBody.setContent("<span style='color:red;font-size:16px'>這是我的第三個JavaMail測試哦!包含了附件和圖片,有點兒龐雜...</span><br>" + 
        "顯示的圖片<img src='cid:4.jpg'/>", "text/html;charset=UTF-8"); 
     
     
    message.saveChanges();    //生成郵件 
    Transport.send(message); 
  } 
 
} 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved