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

Spring框架JavaMailSender發(fā)送郵件工具類詳解

 更新時(shí)間:2020年04月22日 16:32:33   作者:Tlimited  
這篇文章主要為大家詳細(xì)介紹了Spring框架JavaMailSender發(fā)送郵件工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Spring框架JavaMailSender發(fā)送郵件工具類,供大家參考,具體內(nèi)容如下

需要用到的jar包:

下面是發(fā)送工具類代碼:

package com.test.email;

import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

/**
 * @author tlimited
 * @create 2017-08-17 11:38
 **/
public class SendMailUtils {

 // Spring的郵件工具類,實(shí)現(xiàn)了MailSender和JavaMailSender接口
 private JavaMailSenderImpl mailSender;

 /**
 * 初始化郵件發(fā)送數(shù)據(jù)
 * @param host 服務(wù)器
 * @param username 發(fā)送人
 * @param passwd 發(fā)送人密碼
 */
 public void setInitData(String host,String username,String passwd){
  //創(chuàng)建郵件發(fā)送服務(wù)器
 mailSender = new JavaMailSenderImpl();
 mailSender.setHost(host);
 // mailSender.setPort(465);
 mailSender.setUsername(username);
 mailSender.setPassword(passwd);
 //加認(rèn)證機(jī)制
 Properties javaMailProperties = new Properties();
 javaMailProperties.put("mail.smtp.auth", true);
 javaMailProperties.put("mail.smtp.starttls.enable", true);
 javaMailProperties.put("mail.smtp.timeout", 5000);
 mailSender.setJavaMailProperties(javaMailProperties);
 System.out.println("初始化郵件發(fā)送信息完成");
 }
 /**
 * 發(fā)送普通文本
 * @param email 對(duì)方郵箱地址
 * @param subject 主題
 * @param text 郵件內(nèi)容
 */
 public void simpleMailSend(String email,String subject,String text) {
 //創(chuàng)建郵件內(nèi)容
 SimpleMailMessage message=new SimpleMailMessage();
 message.setFrom(mailSender.getUsername());
 message.setTo(email);
 message.setSubject(subject);
 message.setText(text);
 //發(fā)送郵件
 mailSender.send(message);
 System.out.println("發(fā)送成功");
 }

 /**
 * 發(fā)送附件,支持多附件
 * //使用JavaMail的MimeMessage,支付更加復(fù)雜的郵件格式和內(nèi)容
 //MimeMessages為復(fù)雜郵件模板,支持文本、附件、html、圖片等。
 * @param email 對(duì)方郵箱
 * @param subject 主題
 * @param text 內(nèi)容
 * @param paths 附件路徑,和文件名
 * @throws MessagingException
 */
 public void attachedSend(String email,String subject,String text,Map<String,String> paths) throws MessagingException {

 MimeMessage message = mailSender.createMimeMessage();
 //創(chuàng)建MimeMessageHelper對(duì)象,處理MimeMessage的輔助類
 MimeMessageHelper helper = new MimeMessageHelper(message, true);
 //使用輔助類MimeMessage設(shè)定參數(shù)
 helper.setFrom(mailSender.getUsername());
 helper.setTo(email);
 helper.setSubject(subject);
 helper.setText(text);

 if (paths!=null){
  paths.forEach((k,v)->{
   //加載文件資源,作為附件
   FileSystemResource file = new FileSystemResource(v);
   try {
   //添加附件
   helper.addAttachment(k, file);
  } catch (Exception e) {
   e.printStackTrace();
  }
  });
 }
 //發(fā)送郵件
 mailSender.send(message);
 System.out.println("發(fā)送成功");
 }

 /**
 * 發(fā)送html文件,支持多圖片
 * @param email 對(duì)方郵箱
 * @param subject 主題
 * @param text 內(nèi)容
 * @param paths 富文本中添加用到的路徑,一般是圖片,或者css,js文件
 * @throws MessagingException
 */
 public void richContentSend(String email,String subject,String text,Map<String,String> paths) throws MessagingException {

 MimeMessage message = mailSender.createMimeMessage();
 MimeMessageHelper helper = new MimeMessageHelper(message, true);

 helper.setFrom(mailSender.getUsername());
 helper.setTo(email);
 helper.setSubject(subject);
 //第二個(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(text,true);
 //文件地址相對(duì)應(yīng)src目錄
 // ClassPathResource file = new ClassPathResource("logo.png");

 if (paths!=null){
  paths.forEach((k,v)->{
   //文件地址對(duì)應(yīng)系統(tǒng)目錄
   FileSystemResource file = new FileSystemResource(v);
   try {
   helper.addInline(k, file);
  } catch (Exception e) {
   e.printStackTrace();
  }
  });
 }
 mailSender.send(message);
 System.out.println("發(fā)送成功");
 }

 /**
 * 群發(fā)多人,且多附件
 * @param mailto 多人郵件地址
 * @param subject 主題
 * @param text 內(nèi)容
 * @param filePath 文件路徑
 * @throws Exception
 */
 public void sendBatchMailWithFile(String[] emails, String subject, String text, String[] filePath) throws Exception { 

 MimeMessage mimeMessage = mailSender.createMimeMessage(); 
 MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8"); 
 messageHelper.setFrom(new InternetAddress(MimeUtility.encodeText(mailSender.getUsername()))); 
 messageHelper.setSubject(subject); 
 if (filePath != null) { 
  BodyPart mdp = new MimeBodyPart();// 新建一個(gè)存放信件內(nèi)容的BodyPart對(duì)象 
  mdp.setContent(text, "text/html;charset=UTF-8");// 給BodyPart對(duì)象設(shè)置內(nèi)容和格式/編碼方式 
  Multipart mm = new MimeMultipart();// 新建一個(gè)MimeMultipart對(duì)象用來(lái)存放BodyPart對(duì)象 
  mm.addBodyPart(mdp);// 將BodyPart加入到MimeMultipart對(duì)象中(可以加入多個(gè)BodyPart) 
  // 把mm作為消息對(duì)象的內(nèi)容 
  MimeBodyPart filePart; 
  FileDataSource filedatasource; 
  // 逐個(gè)加入附件 
  for (int j = 0; j < filePath.length; j++) { 
  filePart = new MimeBodyPart(); 
  filedatasource = new FileDataSource(filePath[j]); 
  filePart.setDataHandler(new DataHandler(filedatasource)); 
  try { 
   filePart.setFileName(MimeUtility.encodeText(filedatasource.getName())); 
  } catch (Exception e) { 
   e.printStackTrace(); 
  } 
  mm.addBodyPart(filePart); 
  } 
  mimeMessage.setContent(mm); 
 } else { 
  messageHelper.setText(text, true); 
 } 

 List<InternetAddress> list = new ArrayList<InternetAddress>();// 不能使用string類型的類型,這樣只能發(fā)送一個(gè)收件人 
 for (int i = 0; i < emails.length; i++) { 
  list.add(new InternetAddress(emails[i])); 
 } 
 InternetAddress[] address = list.toArray(new InternetAddress[list.size()]); 

 mimeMessage.setRecipients(Message.RecipientType.TO, address); 
 mimeMessage = messageHelper.getMimeMessage(); 

 mailSender.send(mimeMessage); 
 System.out.println("發(fā)送成功");
 } 


 public static void main(String[] args) throws Exception
 {
 SendMailUtils test = new SendMailUtils();
 //測(cè)試發(fā)送普通文本
 // test.setInitData("smtp.qq.com","706548532@qq.com","123456");
 test.setInitData("smtp.163.com","1234@163.com","1234");
 test.simpleMailSend("1326624701@qq.com","測(cè)試","測(cè)試能不能發(fā)郵件?。?!");

 //測(cè)試發(fā)送附件
 /* test.setInitData("smtp.163.com","1234@163.com","1234");
 Map<String,String> map = new HashMap<String, String>();
 map.put("test12.xls", "D:\\tomcat8\\apache-tomcat-8.0.29\\test12.xls");
 map.put("wsdl.rar", "D:\\wsdl.rar");
 test.attachedSend("706548532@qq.com","Hello Attachment","This is a mail with attachment",map);
 */

 //測(cè)試發(fā)送富文本(html文件)
 /* test.setInitData("smtp.163.com","1234@163.com","1234");
 String text = "<body><p style='color:red;'>Hello Html Email</p><img src='cid:file'/></body>";
 Map<String,String> map = new HashMap<String, String>();
 map.put("file", "E:\\1f7827.jpg");
 test.richContentSend("706548532@qq.com","郵件標(biāo)題",text,map);*/

 //測(cè)試群發(fā)多人多附件
 test.setInitData("smtp.163.com","1234@163.com","1234");
 String [] address = {"706548532@qq.com","1326624701@qq.com"};
 String [] filePath = {"D:\\tomcat8\\apache-tomcat-8.0.29\\test12.xls", "D:\\wsdl.rar"};
 test.sendBatchMailWithFile(address, "群發(fā)多文件", "實(shí)時(shí)", filePath);
 }

}

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

相關(guān)文章

  • Java9 集合工廠方法解析

    Java9 集合工廠方法解析

    這篇文章主要介紹了Java9 集合工廠方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java設(shè)計(jì)模式之享元模式

    Java設(shè)計(jì)模式之享元模式

    這篇文章介紹了Java設(shè)計(jì)模式之享元模式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • spring security登錄成功后跳轉(zhuǎn)回登錄前的頁(yè)面

    spring security登錄成功后跳轉(zhuǎn)回登錄前的頁(yè)面

    這篇文章主要介紹了spring security登錄成功后跳轉(zhuǎn)回登錄前的頁(yè)面,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 詳解Java向服務(wù)端發(fā)送文件的方法

    詳解Java向服務(wù)端發(fā)送文件的方法

    這篇文章主要為大家詳細(xì)介紹了Java向服務(wù)端發(fā)送文件的方法,主要是IO流,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 關(guān)于ArrayList初始化容量的問(wèn)題

    關(guān)于ArrayList初始化容量的問(wèn)題

    這篇文章主要介紹了關(guān)于ArrayList初始化容量的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring?Security用戶定義?

    Spring?Security用戶定義?

    這篇文章主要介紹了Spring?Security用戶定義,大家都知道?Spring?Security的用戶定義有很多方式,其實(shí)主要有兩種,基于內(nèi)存的和基于數(shù)據(jù)庫(kù)的,下面我給大家簡(jiǎn)單介紹一下這兩種方式,需要的朋友可以參考下
    2022-02-02
  • java如何實(shí)現(xiàn)字符串中的字母排序

    java如何實(shí)現(xiàn)字符串中的字母排序

    這篇文章主要介紹了java如何實(shí)現(xiàn)字符串中的字母排序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java編程語(yǔ)言特性和優(yōu)勢(shì)

    Java編程語(yǔ)言特性和優(yōu)勢(shì)

    這篇文章主要介紹了Java編程語(yǔ)言特性和優(yōu)勢(shì),Java是一門面向?qū)ο缶幊陶Z(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,同時(shí)也增加了垃圾回收機(jī)制,釋放掉不被使用的內(nèi)存空間,解決了管理內(nèi)存空間的煩惱,下面來(lái)聊聊Java編程語(yǔ)言特性和優(yōu)勢(shì)吧
    2022-01-01
  • Java使用泛型實(shí)現(xiàn)棧結(jié)構(gòu)的示例代碼

    Java使用泛型實(shí)現(xiàn)棧結(jié)構(gòu)的示例代碼

    泛型是JAVA重要的特性,使用泛型編程,可以使代碼復(fù)用率提高。本文將利用泛型實(shí)現(xiàn)簡(jiǎn)單的棧結(jié)構(gòu),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • JAVA為什么要使用封裝及如何封裝經(jīng)典實(shí)例

    JAVA為什么要使用封裝及如何封裝經(jīng)典實(shí)例

    這篇文章主要給大家介紹了關(guān)于JAVA為什么要使用封裝及如何封裝的相關(guān)資料,封裝就是將屬性私有化,提供公有的方法訪問(wèn)私有屬性,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10

最新評(píng)論