<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了用JavaMail傳送HTML模板郵件的具體程式碼,供大家參考,具體內容如下
依賴
<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; /** * 傳送郵件工具類 */ public class MailUtil { private final static Logger logger = LoggerFactory.getLogger(MailUtil.class); /** * 郵件傳送 * @param mailHost 郵件服務地址 * @param fromMail 發件人 * @param fromName 發件人名 * @param fromMailPwd 發件人密碼 * @param toMails 收件人,多個用英文逗號分隔 * @param mailTitle 郵件標題 * @param mailContent 郵件內容 * @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("郵件傳送人不能為空"); } // 郵件屬性資訊 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); // 根據屬性新建一個郵件對談 //session.setDebug(true); // 是否列印偵錯資訊 toMailArr = toMails.split(","); for (String to : toMailArr) { MimeMessage message = new MimeMessage(session); // 由郵件對談新建一個訊息物件 message.setFrom(new InternetAddress(fromMail));// 設定發件人的地址 message.setRecipient(Message.RecipientType.TO, new InternetAddress(to, fromName));// 設定收件人,並設定其接收型別為TO message.setSubject(mailTitle);// 設定標題 message.setContent(mailContent, "text/html;charset=UTF-8"); // 設定郵件內容型別為html message.setSentDate(new Date());// 設定發信時間 message.saveChanges();// 儲存郵件資訊 // 傳送郵件 Transport transport = session.getTransport(); transport.connect(fromMail, fromMailPwd); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } } /** * 郵件傳送(群發) * @param mailHost 郵件服務地址 * @param fromMail 發件人 * @param fromName 發件人名 * @param fromMailPwd 發件人密碼 * @param toMails 收件人,多個用英文逗號分隔 * @param mailTitle 郵件標題 * @param mailContent 郵件內容 * @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("郵件傳送人不能為空"); } // 郵件屬性資訊 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); // 根據屬性新建一個郵件對談 //session.setDebug(true); // 是否列印偵錯資訊 MimeMessage message = new MimeMessage(session); // 由郵件對談新建一個訊息物件 message.setFrom(new InternetAddress(fromMail)); // 設定發件人的地址 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); // 設定收件人,並設定其接收型別為TO message.setSubject(mailTitle); // 設定標題 message.setContent(mailContent, "text/html;charset=UTF-8"); // 設定郵件內容型別為html message.setSentDate(new Date()); // 設定發信時間 message.saveChanges(); // 儲存郵件資訊 // 傳送郵件 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("關閉io流異常", e); } try { if (reader != null) { reader.close(); } } catch ( IOException e) { logger.error("關閉io流異常", e); } } } }
HTML模板
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>java 郵件傳送</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"); // 寫入模板內容 Document doc = Jsoup.parse(html); doc.getElementById("title").html("java 郵件傳送測試"); 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; // 傳送郵件 MailUtil.sendMail(mailHost, fromMail, fromName, fromMailPwd, toMails, mailTitle, mailContent); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45