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

Java使用Spring發(fā)送郵件的實(shí)現(xiàn)代碼

 更新時間:2017年03月04日 13:37:10   作者:weknow619  
本篇文章主要介紹了使用Spring發(fā)送郵件的實(shí)現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Spring Email抽象的核心是MailSender接口,MailSender的實(shí)現(xiàn)能夠通過連接Email服務(wù)器實(shí)現(xiàn)郵件發(fā)送的功能,如下圖:

Spring自帶一個MailSender的實(shí)現(xiàn)就是JavaMailSenderImpl,它也是使用JavaMail API來發(fā)送Email,在使用之前,必須先將JavaMailSenderImpl裝配為Spring應(yīng)用上下文中的一個bean,如下所示:

@Bean
public MailSender mailSender (Environment env) {
  JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
  mailSender.setHost(env.getProperty("mailserver.host"));  
  return mailSender;
} 

默認(rèn)情況下,JavaMailSenderImpl假設(shè)郵件服務(wù)器監(jiān)聽25端口,如果郵件服務(wù)器監(jiān)聽不同的端口,可以使用port屬性指定其端口號,在上面的mailSender()方法中添加:

mailSender.setPort(env.getProperty("mailserver.port")); 

如果郵件服務(wù)器需要認(rèn)證的話,還需要設(shè)置username和password:

mailSender.setUsername(env.getProperty("mailserver.username"));
mailSender.setPassword(env.getProperty("mailserver.password")); 

這樣JavaMailSenderImpl已經(jīng)配置完成,到此可以創(chuàng)建自己的郵件會話,如果已經(jīng)在JNDI中配置了javax.mail.MailSession的話就沒有必要為JavaMailSenderImpl配置詳細(xì)的服務(wù)器細(xì)節(jié)了,可以配置它使用JNDI中已就緒的MailSession。

使用JndiObjectFactoryBean,可以在如下的@Bean方法中配置一個bean,它會從JNDI中查找MailSession:

@Bean
public JndiObjectFactoryBean mailSession ( ) {
  JndiObjectFactoryBean jndi = new JndiObjectFactoryBean();
  jndi.setJndiName("mail/Session");
  jndi.setProxyInterface(MailSession.class);
  jndi.setResourceRef(true);  
  return jndi;
} 

接著可以使用Spring的<jee:jndi-lookup>元素從JNDI中獲取對象,這里可以使用<jee:jndi-lookup>來創(chuàng)建一個bean,它引用了JNDI中的郵件會話:

復(fù)制代碼 代碼如下:

<jee:jndi-lookup id="mailSession" jndi-name="mail/Session" resource-ref="true">

郵件會話準(zhǔn)備好后,就可以將其裝配到mailSender bean中了:

@Bean
public MailSender mailSender (MailSession mailSession) {
  JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
  mailSender.setSession(mailSession);  
  return mailSender;
} 

通過將郵件會話裝配到JavaMailSenderImpl的session屬性中,就完全替換了原來的服務(wù)器配置,現(xiàn)在郵件會話完全通過JNDI進(jìn)行配置和管理,JavaMailSenderImpl就可以專注于發(fā)送郵件而不必自己處理郵件服務(wù)器了。

接著需要將mailSender裝配到我們的業(yè)務(wù)層實(shí)現(xiàn)類中(假設(shè)為SpitterEmailServiceImpl類),如下:

@Autowired
JavaMailSender mailSender; 

接著想要給Spitter用戶發(fā)送Email提示他的朋友寫了新的Spittle,這時需要一個方法來發(fā)送Email,這個方法要接受Email地址和Spittle對象信息,如下方法就是使用郵件發(fā)送器完成該功能:

public void sendSimpleSpittleEmail (Stirng to, Spittle spittle) {
  SimpleMailMessage message = new SimpleMailMessage();
  String spitterName = spittle.getSpitter().getFullName();
  message.setFrom("...@spitter.com"); // email地址
  message.setTo(to);
  message.setSubject("New spittle from " + spitterName);
  message.setText(spitterName + "says: " + spittle.getText());
  mailSender.send(message);
} 

上面代碼中最后一步將消息傳遞給郵件發(fā)送器的send()方法,這樣郵件就發(fā)送出去了。

發(fā)送帶附件的Email

消息發(fā)送成功了,現(xiàn)在嘗試發(fā)送帶有附件的Email,要發(fā)送附件先要創(chuàng)建multipart類型的消息,Email由多個部分組成,其中一部分是Email體,其他部分就是附件。要發(fā)送multipart類型的Email,需要創(chuàng)建一個MIME的消息,可以從郵件發(fā)送器的createMimeMessage( )方法開始:

MimeMessage message = mailSender.createMimeMessage(); 

不過這里使用javax.mail.internet.MimeMessage的API相對有點(diǎn)繁瑣,可以使用Spring提供的MimeMessageHelper簡便操作,實(shí)例化它時將MimeMessage傳給它。

復(fù)制代碼 代碼如下:

MimeMessageHelper helper = new MimeMessageHelper(message, true);  // true表示是multipart類型

得到MimeMessageHelper實(shí)例后,就可以開始組裝Email消息了:

String spitterName = spittle.getSpitter().getFullName();
helper.setForm("...@spitter.com");
helper.setTo(to);
helper.setSubject("New spittle from " + spitterName);
helper.setText(spitterName + " says: " +spittle.getText()); 

下面添加附件,以圖片為例,只要將這個資源傳遞給helper的addAttachment方法即可:

 FileSystemResource image = new FileSystemResource("/file/test.png"); 
helper.addAttachment("test.png", image); 

這里使用Spring的FileSystemResource來加載位于類路徑下的test.png,再調(diào)用addAttachment(),第一個參數(shù)是要添加到Email中附件的名稱,第二個參數(shù)是資源文件。

到這里multipart類型的Email已經(jīng)構(gòu)建完成,現(xiàn)在就要使用MimeMessageHelper發(fā)送帶有附件的Email,完整代碼如下:

public void sendSpittleEmailWithAttachment (Stirng to, Spittle spittle) throws MessagingException {
  MimeMessage message = mailSender.createMimeMessage();
  MimeMessageHelper helper = new MimeMessageHelper(message, true);
  String spitterName = spittle.getSpitter().getFullName();
  helper.setForm("...@spitter.com");
  helper.setTo(to);
  helper.setSubject("New spittle from " + spitterName);
  helper.setText(spitterName + " says: " +spittle.getText());
  FileSystemResource image = new FileSystemResource("/file/test.png"); 
  helper.addAttachment("test.png", image);
  mailSender.send(message);
} 

到此就成功發(fā)送一個帶有附件的Email了。

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

相關(guān)文章

  • Spring Boot集成Spring Cache過程詳解

    Spring Boot集成Spring Cache過程詳解

    這篇文章主要介紹了Spring Boot集成Spring Cache過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • 淺談springboot自動配置原理

    淺談springboot自動配置原理

    這篇文章主要介紹了淺談springboot自動配置原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):算法

    java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):算法

    這篇文章主要介紹了Java的數(shù)據(jù)解構(gòu)基礎(chǔ),希望對廣大的程序愛好者有所幫助,同時祝大家有一個好成績,需要的朋友可以參考下,希望能給你帶來幫助
    2021-07-07
  • Java基于裝飾者模式實(shí)現(xiàn)的染色饅頭案例詳解

    Java基于裝飾者模式實(shí)現(xiàn)的染色饅頭案例詳解

    這篇文章主要介紹了Java基于裝飾者模式實(shí)現(xiàn)的染色饅頭案例,簡單描述了裝飾者模式的概念、原理及Java使用裝飾者模式的相關(guān)實(shí)現(xiàn)步驟、操作技巧與注意事項,需要的朋友可以參考下
    2018-05-05
  • 簡單通用JDBC輔助類封裝(實(shí)例)

    簡單通用JDBC輔助類封裝(實(shí)例)

    下面小編就為大家?guī)硪黄唵瓮ㄓ肑DBC輔助類封裝(實(shí)例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • SpringBoot中使用?POI的示例代碼

    SpringBoot中使用?POI的示例代碼

    這篇文章主要介紹了SpringBoot中使用POI的實(shí)例詳解,包括引入poi的jar包和創(chuàng)建excel的實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • SpringMVC的源碼解析

    SpringMVC的源碼解析

    本文主要介紹了SpringMVC的源碼解析。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Java中的垃圾收集器詳解

    Java中的垃圾收集器詳解

    這篇文章主要介紹了Java中的垃圾收集器詳解,垃圾收集機(jī)制是?Java?的招牌能力,極大地提高了開發(fā)效率,如今垃圾收集幾乎成為現(xiàn)代語言的標(biāo)配,需要的朋友可以參考下
    2023-07-07
  • Java線上問題排查神器Arthas實(shí)戰(zhàn)原理解析

    Java線上問題排查神器Arthas實(shí)戰(zhàn)原理解析

    原先我們Java中我們常用分析問題一般是使用JDK自帶或第三方的分析工具如jstat、jmap、jstack、?jconsole、visualvm、Java?Mission?Control、MAT等,還有一款神器Arthas工具,可幫助程序員解決很多繁瑣的問題,感興趣的朋友一起看看吧
    2022-01-01
  • Java連接MQ實(shí)現(xiàn)信息查詢的操作過程

    Java連接MQ實(shí)現(xiàn)信息查詢的操作過程

    本文介紹了如何使用Java連接ApacheRocketMQ實(shí)現(xiàn)信息查詢的功能,通過編寫Java代碼連接MQ并實(shí)現(xiàn)生產(chǎn)者發(fā)送消息和消費(fèi)者接收并處理消息的過程,展示了如何在分布式系統(tǒng)中實(shí)現(xiàn)訂單處理系統(tǒng)的解耦,感興趣的朋友跟隨小編一起看看吧
    2024-11-11

最新評論

泾阳县| 富民县| 邢台市| 石台县| 汤阴县| 双峰县| 广州市| 海林市| 焉耆| 花莲县| 平顶山市| 永城市| 额尔古纳市| 剑川县| 剑阁县| 阿鲁科尔沁旗| 喀喇沁旗| 玛多县| 泰宁县| 米易县| 达拉特旗| 垫江县| 德惠市| 阳高县| 增城市| 阜康市| 黎城县| 鲁山县| 白银市| 万载县| 马龙县| 乃东县| 台东县| 翁牛特旗| 金塔县| 阳信县| 安西县| 肥乡县| 牡丹江市| 两当县| 宁武县|