欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Spring的JAVA Mail支持簡(jiǎn)化郵件發(fā)送功能

 更新時(shí)間:2019年04月21日 14:48:02   作者:onyas  
這篇文章主要為大家詳細(xì)介紹了使用Spring的JAVA Mail支持簡(jiǎn)化郵件發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

閑來(lái)無(wú)事,翻看《Spring in Action》,發(fā)現(xiàn)Spring集成了對(duì)JAVA Mail的支持,有點(diǎn)小激動(dòng)的看了一遍,嗯,話說(shuō)真的簡(jiǎn)單了很多。

Spring的郵件發(fā)送的核心是MailSender接口,在Spring3.0中提供了一個(gè)實(shí)現(xiàn)類JavaMailSenderImpl,這個(gè)類是發(fā)送郵件的核心類??梢酝ㄟ^(guò)在配置文件中配置使用,當(dāng)然也可以自己硬編碼到代碼中(方便起見(jiàn),下面的演示代碼都是硬編碼到代碼中,省得配置麻煩)。

Spring提供的郵件發(fā)送不僅支持簡(jiǎn)單郵件的發(fā)送、添加附件,而且還可以使用velocity模板控制頁(yè)面樣式(應(yīng)該也支持freemarker)。

首先對(duì)加入相應(yīng)Spring jar包和Java Mail 的jar包。

我們首先得聲明一個(gè)MailSender對(duì)象,因?yàn)镸ailSender對(duì)象只有兩個(gè)重載的send(...)方法,顯得有些簡(jiǎn)陋,我們建議選用JavaMailSender接口,或者干脆直接使用實(shí)現(xiàn)類,JavaMailSenderImpl。筆者是使用的JavaMailSenderImpl對(duì)象,功能豐富。

聲明JavaMailSenderImpl對(duì)象,并在構(gòu)造函數(shù)中初始化(當(dāng)然也可以使用IoC容器初始化):

public class SpringMailSender
 {
 
 //
 Spring的郵件工具類,實(shí)現(xiàn)了MailSender和JavaMailSender接口
 private JavaMailSenderImpl
 mailSender;
  
 public SpringMailSender()
 {
 //
 初始化JavaMailSenderImpl,當(dāng)然推薦在spring配置文件中配置,這里是為了簡(jiǎn)單
 mailSender
 = new JavaMailSenderImpl();
 //
 設(shè)置參數(shù)
 mailSender.setHost("smtp.qq.com");
 mailSender.setUsername("mosaic@qq.com");
 mailSender.setPassword("asterisks");
 ...

得到了MailSender對(duì)象之后,就可以發(fā)送郵件了,下面是示例代碼,沒(méi)有封裝,僅供參考。

1、發(fā)送簡(jiǎn)單郵件

/**
 *
 簡(jiǎn)單郵件發(fā)送
 *
 */
public void simpleSend()
 {
 //
 構(gòu)建簡(jiǎn)單郵件對(duì)象,見(jiàn)名知意
 SimpleMailMessage
 smm = new SimpleMailMessage();
 //
 設(shè)定郵件參數(shù)
 smm.setFrom(mailSender.getUsername());
 smm.setTo("mosaic@126.com");
 smm.setSubject("Hello
 world");
 smm.setText("Hello
 world via spring mail sender");
 //
 發(fā)送郵件
 mailSender.send(smm);
}

2、發(fā)送帶附件的郵件

/**
 *
 帶附件的郵件發(fā)送
 *
 *
 @throws MessagingException
 */
public void attachedSend()
throws MessagingException
 {
 //使用JavaMail的MimeMessage,支付更加復(fù)雜的郵件格式和內(nèi)容
 MimeMessage
 msg = mailSender.createMimeMessage();
 //創(chuàng)建MimeMessageHelper對(duì)象,處理MimeMessage的輔助類
 MimeMessageHelper
 helper = new MimeMessageHelper(msg,
true);
 //使用輔助類MimeMessage設(shè)定參數(shù)
 helper.setFrom(mailSender.getUsername());
 helper.setTo("mosaic@126.com");
 helper.setSubject("Hello
 Attachment");
 helper.setText("This
 is a mail with attachment");
 //加載文件資源,作為附件
 ClassPathResource
 file = new ClassPathResource(
   "Chrysanthemum.jpg");
 //加入附件
 helper.addAttachment("attachment.jpg",
 file);
 //發(fā)送郵件
 mailSender.send(msg);
}

3、發(fā)送富文本郵件

/**發(fā)送富文本郵件
 *
 @throws MessagingException
 */
public void richContentSend()
throws MessagingException
 {
 MimeMessage
 msg = mailSender.createMimeMessage();
 
 MimeMessageHelper
 helper = new MimeMessageHelper(msg,
true);
 
 helper.setFrom(mailSender.getUsername());
 helper.setTo("mosaic@126.com");
 helper.setSubject("Rich
 content mail");
 //第二個(gè)參數(shù)true,表示text的內(nèi)容為html,然后注意<img/>標(biāo)簽,src='cid:file','cid'是contentId的縮寫(xiě),'file'是一個(gè)標(biāo)記,需要在后面的代碼中調(diào)用MimeMessageHelper的addInline方法替代成文件
 helper.setText(
   "<body><p>Hello
 Html Email</p><img src='cid:file'/></body>",
   true);
 
 FileSystemResource
 file = new FileSystemResource(
   "C:\\Users\\Public\\Pictures\\Sample
 Pictures\\Chrysanthemum.jpg");
 helper.addInline("file",
 file);
 
 mailSender.send(msg);
}

 4、使用Velocity模板確定郵件風(fēng)格

使用Velocity模板,需要Velocity的jar包,可以在官方網(wǎng)站下載,并加入ClassPath,然后需要聲明一個(gè)VelocityEngine對(duì)象,具體的參考下面代碼,這是筆者第一次使用Velocity,不甚了解,言多有失,望見(jiàn)諒。

聲明一個(gè)VelocityEngine對(duì)象,并在構(gòu)造函數(shù)中初始化(IoC is optional)

...
private VelocityEngine
 velocityEngine;
 
public SpringMailSender()
 {
  ...
 //
 Velocity的參數(shù),通過(guò)VelocityEngineFactoryBean創(chuàng)建VelocityEngine,也是推薦在配置文件中配置的
 Properties
 props = System.getProperties();
 props.put("resource.loader",
"class");
 props
   .put("class.resource.loader.class",
     "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
 VelocityEngineFactoryBean
 v = new VelocityEngineFactoryBean();
 v.setVelocityProperties(props);
 try {
  velocityEngine
 = v.createVelocityEngine();
 }
catch (VelocityException
 e) {
  e.printStackTrace();
 }
catch (IOException
 e) {
  e.printStackTrace();
 }
 
}

簡(jiǎn)單的Velocity模板文件(index.vm):

<html>
<head>
<style type="text/css">
h4{
 color:red;
 background:#efefef;
}
</style>
</head>
<body>
<h4>${user}
 </h4>
<p><p>
<i>${content}</i>
</body>
</html>

開(kāi)起來(lái)貌似很容易理解,只是普通的Html文件,使用了一些${placeholder}作為占位符。

Java要做的,就是加載模板,并將相應(yīng)的值插入到占位符當(dāng)中。

/**
 *
 使用Velocity模板發(fā)送郵件
 *
 *
 @throws MessagingException
 */
public
 void templateSend() throws MessagingException {
 //
 聲明Map對(duì)象,并填入用來(lái)填充模板文件的鍵值對(duì)
 Map<String,
 String> model = new HashMap<String,
 String>();
 model.put("user",
 "MZULE");
 model.put("content",
 "Hello");
 //
 Spring提供的VelocityEngineUtils將模板進(jìn)行數(shù)據(jù)填充,并轉(zhuǎn)換成普通的String對(duì)象
 String
 emailText = VelocityEngineUtils.mergeTemplateIntoString(
   velocityEngine,
 "index.vm", model);
 //
 和上面一樣的發(fā)送郵件的工作
 MimeMessage
 msg = mailSender.createMimeMessage();
 MimeMessageHelper
 helper = new MimeMessageHelper(msg, true);
 helper.setFrom(mailSender.getUsername());
 helper.setTo("mosaic@126.com");
 helper.setSubject("Rich
 content mail");
 helper.setText(emailText,
 true);
 
 mailSender.send(msg);
}

Spring可謂是大大簡(jiǎn)化了郵件的發(fā)送步驟,雖然我們自己封裝可能實(shí)現(xiàn)起來(lái)并不復(fù)雜,但是,有現(xiàn)成的有何必要重新造輪子呢?(當(dāng)然造輪子可以學(xué)到很多)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java8 LocalDate LocalDateTime等時(shí)間類用法實(shí)例分析

    java8 LocalDate LocalDateTime等時(shí)間類用法實(shí)例分析

    這篇文章主要介紹了java8 LocalDate LocalDateTime等時(shí)間類用法,結(jié)合具體實(shí)例形式分析了LocalDate、LocalTime、LocalDateTime等日期時(shí)間相關(guān)類的功能與具體使用技巧,需要的朋友可以參考下
    2017-04-04
  • Mybatis調(diào)用MySQL存儲(chǔ)過(guò)程的簡(jiǎn)單實(shí)現(xiàn)

    Mybatis調(diào)用MySQL存儲(chǔ)過(guò)程的簡(jiǎn)單實(shí)現(xiàn)

    本篇文章主要介紹了Mybatis調(diào)用MySQL存儲(chǔ)過(guò)程的簡(jiǎn)單實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Java 批量刪除html中注釋內(nèi)容的方法

    Java 批量刪除html中注釋內(nèi)容的方法

    最近項(xiàng)目中有一個(gè)功能需要讀取外部html文本文件。但是有的html文件里面有大量的注釋,需要?jiǎng)h除其中的注釋在存儲(chǔ)
    2014-04-04
  • Mybatis-Plus將字段設(shè)置為null解決方法

    Mybatis-Plus將字段設(shè)置為null解決方法

    MyBatis-Plus是一個(gè)MyBatis的增強(qiáng)工具,在MyBatis的基礎(chǔ)上只做增 強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,下面這篇文章主要給大家介紹了關(guān)于Mybatis-Plus將字段設(shè)置為null的解決方法的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 解決Request獲取請(qǐng)求數(shù)據(jù)中文亂碼問(wèn)題

    解決Request獲取請(qǐng)求數(shù)據(jù)中文亂碼問(wèn)題

    這篇文章主要介紹了Request獲取請(qǐng)求數(shù)據(jù)中文亂碼問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • JDK1.8新特性之方法引用 ::和Optional詳解

    JDK1.8新特性之方法引用 ::和Optional詳解

    這篇文章主要介紹了JDK1.8新特性之方法引用 ::和Optional,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Java 客戶端向服務(wù)端上傳mp3文件數(shù)據(jù)的實(shí)例代碼

    Java 客戶端向服務(wù)端上傳mp3文件數(shù)據(jù)的實(shí)例代碼

    這篇文章主要介紹了Java 客戶端向服務(wù)端上傳mp3文件數(shù)據(jù)的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • Java 10的10個(gè)新特性總結(jié)

    Java 10的10個(gè)新特性總結(jié)

    這篇文章我們給大家整理了關(guān)于Java 10的10個(gè)新特性以及相關(guān)要點(diǎn)內(nèi)容,有興趣的朋友們可以參考下。
    2018-08-08
  • Spring Boot 2.X優(yōu)雅的解決跨域問(wèn)題

    Spring Boot 2.X優(yōu)雅的解決跨域問(wèn)題

    這篇文章主要給大家介紹了關(guān)于Spring Boot 2.X如何優(yōu)雅的解決跨域問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot 2.X具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 全網(wǎng)最全SpringBoot集成swagger的詳細(xì)教程

    全網(wǎng)最全SpringBoot集成swagger的詳細(xì)教程

    swagger是當(dāng)下比較流行的實(shí)時(shí)接口文文檔生成工具,swagger分為swagger2?和swagger3兩個(gè)常用版本,二者區(qū)別不是很大,主要對(duì)于依賴和注解進(jìn)行了優(yōu)化,swagger2需要引入2個(gè)jar包,swagger3只需要一個(gè),用起來(lái)沒(méi)有什么大的區(qū)別,本文給大家詳細(xì)介紹,感興趣的朋友一起看看吧
    2022-08-08

最新評(píng)論