最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中使用JavaMail多發(fā)郵件及郵件的驗證和附件實現(xiàn)

 更新時間:2016年02月23日 08:53:48   作者:chenssy  
這篇文章主要介紹了Java中使用Java Mail多發(fā)郵件及郵件的驗證和附件實現(xiàn),包括在郵件中加入圖片等功能的實現(xiàn)講解,需要的朋友可以參考下

多發(fā)和用戶驗證
下面先來介紹如何實現(xiàn)將郵件發(fā)送給多個收件人和如何利用Authenticators對象實現(xiàn)用戶驗證。  
指定收件人的時候,我們可以有兩種方法來指定。上篇博客是在發(fā)送郵件的時候臨時指定收件人,其實還可以在Message對象中指定。

message.addRecipient(Message.RecipientType.TO,new InternetAddress(” 995812509@99.com ”)); 

         這個只是發(fā)送給一個收件人而言,但是有多個收件人如何處理?同樣有兩種方法來處理。
          1、在發(fā)送郵件時Transport的sendMessage()方法指定收件人時是使用數(shù)組來指定收件人的,這個時候我們只需要多添加收件人地址即可完成。
          2、在使用Message對象來添加收件人我們可以使用InternetAddress對象的parse(String string)方法,該方法返回的是InternetAddress數(shù)組,這樣同樣可以實現(xiàn)發(fā)送給多個收件人。
 
         我們知道在進行JavaMail開發(fā)時我們必須要進行授權(quán)校驗,授權(quán)校驗?zāi)康氖亲柚顾巳我鈦y發(fā)郵件,減少垃圾郵件的產(chǎn)生。
我們可以在獲取Session對象的時候進行校驗。在Session對象中有這兩個方法:

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

這兩個方法都有一個共同的參數(shù)authenticator,該參數(shù)是一個Authenticator對象。Authenticator對象就是幫助用戶進行信息驗證的,完成授權(quán)校驗。Authenticator對象中有g(shù)etPasswordAuthentication()方法,該方法返回返回一個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("chenssy995812509@163.com")); 
     
    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("2222@qq.cpm")}); 
    msg.setRecipients(RecipientType.TO, InternetAddress.parse("995812509@qq.com,1247723213@qq.com")); 
     
    Transport.send(msg); 
  } 
 
} 

 

帶有圖片和附件的郵件
在實際的電子郵件中我們一般都會涉及到更加復(fù)雜電子郵件結(jié)構(gòu),例如有附件、郵件正文里面包含圖片、包含歌曲等等,在這個時候我們就必須要對郵件的結(jié)構(gòu)有著很清晰的認識。在進行復(fù)合郵件開發(fā)之前需要對復(fù)合郵件的結(jié)構(gòu)有一定的了解。

201622384926751.jpg (418×451)

       上面這幅圖片展示了一封復(fù)合郵件的整體結(jié)構(gòu),我們可以看出一封復(fù)雜的電子郵件由多個部分組成。它有一個頭部和正文,但是正文并不是像以前那么簡單了,而是由幾個部分組成。頭部需要起到一個指示的作用,它需要說明正文需要使用什么樣的分隔符來分開,正文幾個部分之間使用什么樣的組合關(guān)系。對于上面電子郵件它由三個部分組成,每一部分都有自己頭和體,第一部分也由兩個部分組成。
 
         復(fù)合郵件的組合關(guān)系:
         正文部分之間有多種組合關(guān)系。組合關(guān)系如下圖:

201622385027101.jpg (568×270)

alternative:選擇關(guān)系。上面的純文本和超文本之間就是一種選擇關(guān)系。
        related:關(guān)聯(lián)關(guān)系。假如上面的超文本正文是展示一幅圖片,那么我們在發(fā)送郵件的時候必須要將這幅圖片包含到郵件中,也就是所謂的內(nèi)嵌資源,這個內(nèi)嵌資源是給超文本用的。所以他們兩者之間是一個關(guān)聯(lián)關(guān)系。
        mixed:混合關(guān)系。在純文本、超文本和內(nèi)嵌資源組成一個整體和,他們與附件并列著,兩者之間就是一個混合關(guān)系了。
 
        復(fù)合郵件組織結(jié)構(gòu)的API:

201622385127929.jpg (612×458)

  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("陳明")+"\"<chenssy995812509@163.com>")); 
    message.setRecipients(RecipientType.TO, new Address[]{new InternetAddress("995812509@qq.com")}); 
     
    //郵件正文 
    MimeMultipart multipart = new MimeMultipart("mixed"); 
    message.setContent(multipart); 
    /* 
     * 創(chuàng)建郵件的內(nèi)容 
     * 包括一個郵件正文和兩個附件 
     */ 
    MimeBodyPart content = new MimeBodyPart();   //郵件內(nèi)容 
    MimeBodyPart attch1 = new MimeBodyPart();   //附件1 
    MimeBodyPart attch2 = new MimeBodyPart();   //附件2 
    //將郵件內(nèi)容添加到multipart中 
    multipart.addBodyPart(content); 
    multipart.addBodyPart(attch1); 
    multipart.addBodyPart(attch2); 
     
    //設(shè)置附件1 
    DataSource ds1 = new FileDataSource("G:\\電子書\\oracle口令.txt"); 
    DataHandler dh1 = new DataHandler(ds1); 
    attch1.setDataHandler(dh1); 
    attch1.setFileName("oracle.txt"); 
    //設(shè)置附件2 
    DataSource ds2 = new FileDataSource("G:\\電子書\\賬號.txt"); 
    DataHandler dh2 = new DataHandler(ds2); 
    attch2.setDataHandler(dh2); 
    attch2.setFileName(MimeUtility.encodeText("賬號.txt")); 
    /* 
     * 設(shè)置內(nèi)容(正文)---是一個復(fù)雜體 
     * 包括HTML正文和顯示一張圖片 
     */ 
    MimeMultipart bodyMultipart = new MimeMultipart("related"); 
    content.setContent(bodyMultipart); 
    //構(gòu)造正文 
    MimeBodyPart htmlBody = new MimeBodyPart(); 
    MimeBodyPart gifBody = new MimeBodyPart(); 
    bodyMultipart.addBodyPart(htmlBody); 
    bodyMultipart.addBodyPart(gifBody); 
   
    //設(shè)置圖片 
    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"); 
    //設(shè)置HTML正文 
    htmlBody.setContent("<span style='color:red;font-size:16px'>這是我的第三個JavaMail測試哦!包括了附件和圖片,有點兒復(fù)雜...</span><br>" + 
        "顯示的圖片<img src='cid:4.jpg'/>", "text/html;charset=UTF-8"); 
     
     
    message.saveChanges();    //生成郵件 
    Transport.send(message); 
  } 
 
} 

相關(guān)文章

  • RocketMQ4.5.2 修改mqnamesrv 和 mqbroker的日志路徑操作

    RocketMQ4.5.2 修改mqnamesrv 和 mqbroker的日志路徑操作

    這篇文章主要介紹了RocketMQ 4.5.2 修改mqnamesrv 和 mqbroker的日志路徑操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 詳解利用SpringCloud搭建一個最簡單的微服務(wù)框架

    詳解利用SpringCloud搭建一個最簡單的微服務(wù)框架

    這篇文章主要介紹了詳解利用SpringCloud搭建一個最簡單的微服務(wù)框架,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • spring自定義注解及使用方法詳細例子

    spring自定義注解及使用方法詳細例子

    這篇文章主要給大家介紹了關(guān)于spring自定義注解及使用方法的相關(guān)資料,Spring 是一個非常強大的框架,可以使用自定義注解來完成許多任務(wù),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • JAVA虛擬機中 -D, -X, -XX ,-server參數(shù)使用

    JAVA虛擬機中 -D, -X, -XX ,-server參數(shù)使用

    本文主要介紹了JAVA虛擬機中 -D, -X, -XX ,-server參數(shù)使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • myeclipse開發(fā)servlet_動力節(jié)點Java學(xué)院整理

    myeclipse開發(fā)servlet_動力節(jié)點Java學(xué)院整理

    MyEclipse,是在eclipse基礎(chǔ)上加上自己的插件開發(fā)而成的功能強大的企業(yè)級集成開發(fā)環(huán)境,主要用于Java、Java EE以及移動應(yīng)用的開發(fā)。下面這篇文章主要給大家介紹了關(guān)于myeclipse開發(fā)servlet的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • java實現(xiàn)掃雷游戲控制臺版

    java實現(xiàn)掃雷游戲控制臺版

    這篇文章主要為大家詳細介紹了java實現(xiàn)掃雷游戲控制臺版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • java中&與&&的區(qū)別

    java中&與&&的區(qū)別

    本文主要介紹了java中&與&&的區(qū)別,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • SpringBoot對PDF進行模板內(nèi)容填充與電子簽名合并詳解

    SpringBoot對PDF進行模板內(nèi)容填充與電子簽名合并詳解

    這篇文章主要為大家詳細介紹了SpringBoot對PDF進行模板內(nèi)容填充與電子簽名合并的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以參考下
    2023-12-12
  • SpringBoot配置log4j2的實現(xiàn)示例

    SpringBoot配置log4j2的實現(xiàn)示例

    SpringBoot中默認使用Logback作為日志框架,本文主要介紹了SpringBoot配置log4j2的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • Java基礎(chǔ)之Spring5的核心之一IOC容器

    Java基礎(chǔ)之Spring5的核心之一IOC容器

    這篇文章主要介紹了Java基礎(chǔ)之Spring5的核心之一IOC容器,文中有非常詳細的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04

最新評論

潍坊市| 佳木斯市| 博野县| 万全县| 永和县| 乳山市| 麻城市| 齐齐哈尔市| 桃源县| 虎林市| 旺苍县| 新和县| 永泰县| 淳安县| 辽宁省| 淄博市| 岳阳市| 威远县| 类乌齐县| 呼图壁县| 呼玛县| 岳西县| 杭州市| 玉门市| 大姚县| 佛坪县| 贞丰县| 紫金县| 九龙坡区| 开阳县| 新兴县| 涟水县| 梅河口市| 十堰市| 固阳县| 景泰县| 凭祥市| 庆云县| 叶城县| 桓仁| 岗巴县|