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

利用JavaMail發(fā)送HTML模板郵件

 更新時間:2022年08月11日 10:52:59   作者:虛心若愚求知若渴  
這篇文章主要為大家詳細介紹了利用JavaMail發(fā)送HTML模板郵件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了用JavaMail發(fā)送HTML模板郵件的具體代碼,供大家參考,具體內(nèi)容如下

依賴

<dependency>
? ? <groupId>org.jsoup</groupId>
? ? <artifactId>jsoup</artifactId>
? ? <version>1.10.3</version>
</dependency>

<dependency>
? ? <groupId>javax.mail</groupId>
? ? <artifactId>mail</artifactId>
? ? <version>1.4.1</version>
</dependency>

工具類

package test.email;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
?* 發(fā)送郵件工具類
?*/
public class MailUtil {
?? ?
?? ?private final static Logger logger = LoggerFactory.getLogger(MailUtil.class);
?? ?
?? ?/**
?? ? * 郵件發(fā)送
?? ? * @param mailHost 郵件服務(wù)地址
?? ? * @param fromMail 發(fā)件人
?? ? * @param fromName 發(fā)件人名
?? ? * @param fromMailPwd 發(fā)件人密碼
?? ? * @param toMails 收件人,多個用英文逗號分隔
?? ? * @param mailTitle 郵件標題
?? ? * @param mailContent 郵件內(nèi)容
?? ? * @throws Exception
?? ? */
?? ?public static void sendMail(String mailHost, String fromMail, String fromName, String fromMailPwd,
?? ??? ??? ?String toMails, String mailTitle, String mailContent) throws Exception {
?? ??? ?String[] toMailArr = null;
?? ??? ?if (toMails != null && !toMails.equals("")) {
?? ??? ??? ?toMailArr = toMails.split(",");
?? ??? ?} else {
?? ??? ??? ?throw new Exception("郵件發(fā)送人不能為空");
?? ??? ?}
?? ??? ?
?? ??? ?// 郵件屬性信息
?? ??? ?Properties props = new Properties();
?? ??? ?props.put("mail.host", mailHost);
?? ??? ?props.put("mail.transport.protocol", "smtp");
?? ??? ?props.put("mail.smtp.auth", "true");
?? ??? ?
?? ??? ?Session session = Session.getInstance(props); // 根據(jù)屬性新建一個郵件會話
?? ??? ?//session.setDebug(true); // 是否打印調(diào)試信息
?? ??? ?toMailArr = toMails.split(",");
?? ??? ?for (String to : toMailArr) {
?? ??? ??? ?MimeMessage message = new MimeMessage(session); // 由郵件會話新建一個消息對象
?? ??? ??? ?message.setFrom(new InternetAddress(fromMail));// 設(shè)置發(fā)件人的地址
?? ??? ??? ?message.setRecipient(Message.RecipientType.TO, new InternetAddress(to, fromName));// 設(shè)置收件人,并設(shè)置其接收類型為TO
?? ??? ??? ?message.setSubject(mailTitle);// 設(shè)置標題
?? ??? ??? ?message.setContent(mailContent, "text/html;charset=UTF-8"); // 設(shè)置郵件內(nèi)容類型為html
?? ??? ??? ?message.setSentDate(new Date());// 設(shè)置發(fā)信時間
?? ??? ??? ?message.saveChanges();// 存儲郵件信息

?? ??? ??? ?// 發(fā)送郵件
?? ??? ??? ?Transport transport = session.getTransport();
?? ??? ??? ?transport.connect(fromMail, fromMailPwd);
?? ??? ??? ?transport.sendMessage(message, message.getAllRecipients());
?? ??? ??? ?transport.close();
?? ??? ?}
?? ?}

?? ?/**
?? ? * 郵件發(fā)送(群發(fā))
?? ? * @param mailHost 郵件服務(wù)地址
?? ? * @param fromMail 發(fā)件人
?? ? * @param fromName 發(fā)件人名
?? ? * @param fromMailPwd 發(fā)件人密碼
?? ? * @param toMails 收件人,多個用英文逗號分隔
?? ? * @param mailTitle 郵件標題
?? ? * @param mailContent 郵件內(nèi)容
?? ? * @throws Exception
?? ? */
?? ?public static void sendGroupMail(String mailHost, String fromMail, String fromName, String fromMailPwd,
?? ??? ??? ?String toMails, String mailTitle, String mailContent) throws Exception {
?? ??? ?String[] toMailArr = null;
?? ??? ?if (toMails != null && !toMails.equals("")) {
?? ??? ??? ?toMailArr = toMails.split(",");
?? ??? ?} else {
?? ??? ??? ?throw new Exception("郵件發(fā)送人不能為空");
?? ??? ?}
?? ??? ?
?? ??? ?// 郵件屬性信息
?? ??? ?Properties props = new Properties();
?? ??? ?props.put("mail.host", mailHost);
?? ??? ?props.put("mail.transport.protocol", "smtp");
?? ??? ?props.put("mail.smtp.auth", "true");
?? ??? ?

?? ??? ?Session session = Session.getInstance(props); // 根據(jù)屬性新建一個郵件會話
?? ??? ?//session.setDebug(true); // 是否打印調(diào)試信息
?? ??? ?MimeMessage message = new MimeMessage(session); // 由郵件會話新建一個消息對象
?? ??? ?message.setFrom(new InternetAddress(fromMail)); // 設(shè)置發(fā)件人的地址
?? ??? ?InternetAddress[] sendTo = new InternetAddress[toMailArr.length];
?? ??? ?for (int i = 0; i < toMailArr.length; i++) {
?? ??? ??? ?sendTo[i] = new InternetAddress(toMailArr[i], fromName);
?? ??? ?}
?? ??? ?message.setRecipients(Message.RecipientType.TO, sendTo); // 設(shè)置收件人,并設(shè)置其接收類型為TO
?? ??? ?message.setSubject(mailTitle); // 設(shè)置標題
?? ??? ?message.setContent(mailContent, "text/html;charset=UTF-8"); // 設(shè)置郵件內(nèi)容類型為html
?? ??? ?message.setSentDate(new Date()); // 設(shè)置發(fā)信時間
?? ??? ?message.saveChanges(); // 存儲郵件信息

?? ??? ?// 發(fā)送郵件
?? ??? ?Transport transport = session.getTransport();
?? ??? ?transport.connect(fromMail, fromMailPwd);
?? ??? ?transport.sendMessage(message, message.getAllRecipients());
?? ??? ?transport.close();
?? ?}

?? ?/**
?? ? * 讀取html文件為String
?? ? * @param htmlFileName
?? ? * @return
?? ? * @throws Exception
?? ? */
?? ?public static String readHtmlToString(String htmlFileName) throws Exception{
?? ??? ?InputStream is = null;
?? ??? ?Reader reader = null;
?? ??? ?try {
?? ??? ??? ?is = MailUtil.class.getClassLoader().getResourceAsStream(htmlFileName);
?? ??? ??? ?if (is == ?null) {
?? ??? ??? ??? ?throw new Exception("未找到模板文件");
?? ??? ??? ?}
?? ??? ??? ?reader = new InputStreamReader(is, "UTF-8"); ?
?? ??? ??? ?StringBuilder sb = new StringBuilder();
?? ??? ??? ?int bufferSize = 1024;
?? ??? ??? ?char[] buffer = new char[bufferSize];
?? ??? ??? ?int length = 0;
?? ??? ??? ?while ((length = reader.read(buffer, 0, bufferSize)) != -1){
?? ??? ??? ??? ?sb.append(buffer, 0, length);
?? ??? ??? ?}
?? ??? ??? ?return sb.toString();
?? ??? ?} finally {
?? ??? ??? ?try {
?? ??? ??? ??? ?if (is != null) {
?? ??? ??? ??? ??? ?is.close();
?? ??? ??? ??? ?}
?? ??? ??? ?} catch (IOException e) {
?? ??? ??? ??? ?logger.error("關(guān)閉io流異常", e);
?? ??? ??? ?}
?? ??? ??? ?try {
?? ??? ??? ??? ?if (reader != null) {
?? ??? ??? ??? ??? ?reader.close();
?? ??? ??? ??? ?}
?? ??? ??? ?} catch ( IOException e) {
?? ??? ??? ??? ?logger.error("關(guān)閉io流異常", e);
?? ??? ??? ?}
?? ??? ?}
?? ?}

}

HTML模板

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8"/>
?? ??? ?<title>java 郵件發(fā)送</title>
?? ?</head>
?? ?<body>
?? ??? ?<h1 id="title"></h1>
?? ??? ?<div id="content"></div>
?? ?</body>
</html>

測試

package test.email;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class SendHtmlTemplateMail {
?? ?
?? ?public static void main(String[] args) throws Exception {
?? ??? ?// 讀取html模板
?? ??? ?String html = MailUtil.readHtmlToString("mailTemplate.html");
?? ??? ?
?? ??? ?// 寫入模板內(nèi)容
?? ??? ?Document doc = Jsoup.parse(html);
?? ??? ?doc.getElementById("title").html("java 郵件發(fā)送測試");
?? ??? ?doc.getElementById("content").html("么么噠");
?? ??? ?String result = doc.toString();
?? ??? ?
?? ??? ?String mailHost = "smtp.qq.com";
?? ??? ?String fromMail = "";
?? ??? ?String fromName = "小灰";
?? ??? ?String fromMailPwd = "";
?? ??? ?String toMails = "";
?? ??? ?String mailTitle = "hello javamail";
?? ??? ?String mailContent = result;
? ? ? ??
?? ??? ?// 發(fā)送郵件
?? ??? ?MailUtil.sendMail(mailHost, fromMail, fromName, fromMailPwd, toMails, mailTitle, mailContent);
?? ?}
}

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

相關(guān)文章

  • 詳解Jackson的基本用法

    詳解Jackson的基本用法

    Java生態(tài)圈中有很多處理JSON和XML格式化的類庫,Jackson是其中比較著名的一個。雖然JDK自帶了XML處理類庫,但是相對來說比較低級,使用本文介紹的Jackson等高級類庫處理起來會方便很多
    2021-06-06
  • SpringBoot使用Flyway進行數(shù)據(jù)庫管理的操作方法

    SpringBoot使用Flyway進行數(shù)據(jù)庫管理的操作方法

    Flyway是一個開源的數(shù)據(jù)庫版本管理工具,并且極力主張“約定大于配置”,簡單、專注、強大。接下來通過本文給大家介紹SpringBoot使用Flyway進行數(shù)據(jù)庫管理的方法,感興趣的朋友一起看看吧
    2021-09-09
  • Java并發(fā)編程ReentrantReadWriteLock加讀鎖流程

    Java并發(fā)編程ReentrantReadWriteLock加讀鎖流程

    這篇文章主要介紹了Java并發(fā)編程ReentrantReadWriteLock加讀鎖流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 配置DispatcherServlet的方法介紹

    配置DispatcherServlet的方法介紹

    今天小編就為大家分享一篇關(guān)于配置DispatcherServlet的方法介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java的并發(fā)編程之CyclicBarrier解析

    Java的并發(fā)編程之CyclicBarrier解析

    這篇文章主要介紹了Java的并發(fā)編程之CyclicBarrier解析,CyclicBarrier支持一個可選的Runnable命令,在一組線程中的最后一個線程到達之后(但在釋放所有線程之前),該命令只在每個屏障點運行一次,需要的朋友可以參考下
    2023-11-11
  • 詳解Java對象序列化為什么要使用SerialversionUID

    詳解Java對象序列化為什么要使用SerialversionUID

    這篇文章主要介紹了詳解Java對象序列化為什么要使用SerialversionUID,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SpringBoot實現(xiàn)HTTP調(diào)用的七種方式總結(jié)

    SpringBoot實現(xiàn)HTTP調(diào)用的七種方式總結(jié)

    小編在工作中,遇到一些需要調(diào)用三方接口的任務(wù),就需要用到 HTTP 調(diào)用工具,這里,我總結(jié)了一下 實現(xiàn) HTTP 調(diào)用的方式,共有 7 種(后續(xù)會繼續(xù)新增),需要的朋友可以參考下
    2023-09-09
  • Java字節(jié)流和字符流及IO流的總結(jié)

    Java字節(jié)流和字符流及IO流的總結(jié)

    本文主要將Java中的IO流進行了梳理,通過將其分成字節(jié)流和字符流,以及輸入流和輸出流分別統(tǒng)計,來建立一個對 Java中IO流全局的概念,通過一些實例來演示了如何通過不同類型的流來組合實現(xiàn)強大靈活的輸入和輸出,最后介紹了同時支持輸入和輸出的 RandomAccessFile。
    2021-04-04
  • java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):線性表

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

    這篇文章主要介紹了Java的數(shù)據(jù)解構(gòu)基礎(chǔ),希望對廣大的程序愛好者有所幫助,同時祝大家有一個好成績,需要的朋友可以參考下,希望能給你帶來幫助
    2021-07-07
  • Java遞歸遍歷文件目錄代碼實例

    Java遞歸遍歷文件目錄代碼實例

    這篇文章主要介紹了Java遞歸遍歷文件目錄代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11

最新評論

育儿| 滦平县| 浦县| 三门峡市| 新昌县| 揭西县| 内江市| 哈密市| 综艺| 桃园县| 精河县| 东乡| 林周县| 改则县| 贵州省| 乌拉特中旗| 汾阳市| 资阳市| 泰州市| 富锦市| 大理市| 开化县| 大邑县| 重庆市| 博客| 稻城县| 城市| 来安县| 萍乡市| 和平区| 高邮市| 衡南县| 杂多县| 中阳县| 临漳县| 藁城市| 枣强县| 枞阳县| 阜南县| 昔阳县| 三河市|