Java HtmlEmail 郵件發(fā)送的簡(jiǎn)單實(shí)現(xiàn)代碼
Java 項(xiàng)目中常?;赜龅桨l(fā)送郵件
Java 發(fā)送郵件有幾種,今天先給大家介紹用 HtmlEmail 來(lái)發(fā)送郵件,我這里是用 Maven 來(lái)搭建的
HtmlEmail 可以抄帶HTML
首先 需要導(dǎo)入jar 包
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version>1.4</version> </dependency>
然后我們來(lái)建立一個(gè)發(fā)送郵件的 Mail 類 JavaBean
public class Mail implements Serializable{ private static final long serialVersionUID = -6390720891150157552L; public static final String ENCODEING = "UTF-8"; // 服務(wù)器地址 private String host; // 發(fā)件人的郵箱 private String sender; // 發(fā)件人昵稱 private String name; // 賬號(hào) private String username; // 密碼 private String password; // 收件人的郵箱 private String receiver; // 收件人的名稱 private String receiverName; // 收件人的郵箱(key)和名稱(value) private Map<String, String> to; // 抄送人的郵箱(key)和名稱(value) private Map<String, String> cc; // 秘密抄送人的郵箱(key)和名稱(value) private Map<String, String> bcc; // 主題 private String subject; // 信息(支持HTML) private String message; public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getSender() { return sender; } public void setSender(String sender) { this.sender = sender; } public String getReceiver() { return receiver; } public void setReceiver(String receiver) { this.receiver = receiver; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getReceiverName() { return receiverName; } public void setReceiverName(String receiverName) { this.receiverName = receiverName; } public Map<String, String> getTo() { return to; } public void setTo(Map<String, String> to) { this.to = to; } public Map<String, String> getCc() { return cc; } public void setCc(Map<String, String> cc) { this.cc = cc; } public Map<String, String> getBcc() { return bcc; } public void setBcc(Map<String, String> bcc) { this.bcc = bcc; } }
然后再來(lái)創(chuàng)建一個(gè)發(fā)送郵件的工具類 MailUtil
public class MailUtil { public Boolean send(Mail mail){ HtmlEmail email = new HtmlEmail(); try { // 這里是SMTP發(fā)送服務(wù)器的名字:163的如下:"smtp.163.com" email.setHostName(mail.getHost()); // 字符編碼集的設(shè)置 email.setCharset(Mail.ENCODEING); // 發(fā)送人的郵箱 email.setFrom(mail.getSender(), mail.getName()); // 如果需要認(rèn)證信息的話,設(shè)置認(rèn)證:用戶名-密碼。分別為發(fā)件人在郵件服務(wù)器上的注冊(cè)名稱和密碼 email.setAuthentication(mail.getUsername(), mail.getPassword()); // 設(shè)置收件人信息 setTo(email, mail); // 設(shè)置抄送人信息 setCc(email, mail); // 設(shè)置密送人信息 setBcc(email, mail); // 要發(fā)送的郵件主題 email.setSubject(mail.getSubject()); // 要發(fā)送的信息,由于使用了HtmlEmail,可以在郵件內(nèi)容中使用HTML標(biāo)簽 email.setHtmlMsg(mail.getMessage()); // 發(fā)送 email.send(); if (Log.isDebugEnabled()) { Log.info(mail.getSender() + " 發(fā)送郵件到 " + mail.getReceiver()); } return true; } catch (Exception e) { e.printStackTrace(); Log.info(mail.getSender() + " 發(fā)送郵件到 " + mail.getReceiver() + " 失敗"); return false; } } /** * 設(shè)置收件人信息 * * @param email * @param mail * @throws EmailException */ private void setTo(HtmlEmail email, Mail mail) throws EmailException{ // 收件人不為空 if (StringUtils.isNotEmpty(mail.getReceiver())) { // 收件人名稱不為空 if (StringUtils.isNotEmpty(mail.getReceiverName())) { email.addTo(mail.getReceiver(), mail.getReceiverName()); } else { email.addTo(mail.getReceiver()); } } // 收件人 Map 不為空 if (mail.getTo() != null) { for (Map.Entry<String, String> entry : mail.getTo().entrySet()) { // 收件人名稱不為空 if (StringUtils.isNotEmpty(entry.getValue())) { email.addTo(entry.getKey(), entry.getValue()); } else { email.addTo(entry.getKey()); } } } } /** * 設(shè)置抄送人信息 * * @param email * @param mail * @throws EmailException */ private void setCc(HtmlEmail email, Mail mail) throws EmailException{ // 抄送人 Map 不為空 if (mail.getCc() != null) { for (Map.Entry<String, String> entry : mail.getCc().entrySet()) { // 抄送人名稱不為空 if (StringUtils.isNotEmpty(entry.getValue())) { email.addCc(entry.getKey(), entry.getValue()); } else { email.addCc(entry.getKey()); } } } } /** * 設(shè)置密送人信息 * * @param email * @param mail * @throws EmailException */ private void setBcc(HtmlEmail email, Mail mail) throws EmailException{ // 密送人 Map 不為空 if (mail.getBcc() != null) { for (Map.Entry<String, String> entry : mail.getBcc().entrySet()) { // 密送人名稱不為空 if (StringUtils.isNotEmpty(entry.getValue())) { email.addBcc(entry.getKey(), entry.getValue()); } else { email.addBcc(entry.getKey()); } } } } }
寫到這里,大概也就差不多了,萬(wàn)里長(zhǎng)征只有最后一步了
測(cè)試,測(cè)試,測(cè)試
這里編寫一個(gè) junit 方法來(lái)測(cè)試
@Test public void sendMail(){ Mail mail = new Mail(); // 設(shè)置郵件服務(wù)器 mail.setHost("smtp.exmail.qq.com"); // 發(fā)件人郵件地址 mail.setSender("chenhao@kezhanbang.cn"); // 發(fā)件人名稱 mail.setName("Java.小學(xué)生"); // 登錄賬號(hào),一般都是和郵箱名一樣吧 mail.setUsername("chenhao@kezhanbang.cn"); // 發(fā)件人郵箱的登錄密碼 mail.setPassword("xxxxxxxx"); // 接收人 mail.setReceiver("huntertochen@163.com"); mail.setReceiverName("我要女票"); mail.setSubject("萬(wàn)里長(zhǎng)征最后一步測(cè)試"); String html = "<!DOCTYPE html>"; html += "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"; html += "<title>Insert title here</title>"; html += "</head><body>"; html += "<div style=\"width:600px;height:400px;margin:50px auto;\">"; html += "<h1>我來(lái)看看郵件是否發(fā)送成功呢</h1><br/><br/>"; html += "<p>下面是通過(guò)該協(xié)議可以創(chuàng)建一個(gè)指向電子郵件地址的超級(jí)鏈接,通過(guò)該鏈接可以在Internet中發(fā)送電子郵件</p><br/>"; html += "<a href=\"mailto:huntereagle@foxmail.com?subject=test&cc=huntertochen@163.com&body=use mailto sample\">send mail</a>"; html += "</div>"; html += "</body></html>"; mail.setMessage(html); new MailUtil().send(mail); }
趕緊登錄郵箱看看吧
來(lái)看看這里 主題 內(nèi)容,發(fā)送人名稱和收件人名稱是否和代碼寫的一樣呢,如果一樣的話,恭喜你成功啦
到這,其實(shí)發(fā)送郵件就算完了?。?!
這里在啰嗦最后一個(gè)小知識(shí)點(diǎn) mailto
mailto: 通過(guò)該協(xié)議可以創(chuàng)建一個(gè)指向電子郵件地址的超級(jí)鏈接,通過(guò)該鏈接可以在Internet中發(fā)送電子郵件
我們點(diǎn)擊 send mail 會(huì)打開你郵件客戶端一個(gè)發(fā)送界面,如果你有寫抄帶信息,也會(huì)給你帶上
以上這篇Java HtmlEmail 郵件發(fā)送的簡(jiǎn)單實(shí)現(xiàn)代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MybatisX-Generator自動(dòng)代碼生成插件教程
這篇文章主要介紹了MybatisX-Generator自動(dòng)代碼生成插件教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04Dwr3.0純注解(純Java Code配置)配置與應(yīng)用淺析一之零配置文件化
Dwr對(duì)我來(lái)說(shuō)最重要的功能點(diǎn)就是反向Ajax調(diào)用,通俗來(lái)將就是后端可以直接調(diào)用前端的JS方法(只要在所能訪問(wèn)的范圍內(nèi)),這也就是Dwr的真正來(lái)由,當(dāng)然它也有最基本的前端直接調(diào)用后端的特性,省去了我們經(jīng)常的一般Ajax調(diào)用2016-04-04詳解Spring中使用xml配置bean的細(xì)節(jié)
本篇文章主要介紹了Spring中使用xml配置bean的細(xì)節(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06springboot后端如何實(shí)現(xiàn)攜帶token登陸
這篇文章主要介紹了springboot后端如何實(shí)現(xiàn)攜帶token登陸,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11java網(wǎng)絡(luò)編程學(xué)習(xí)java聊天程序代碼分享
java聊天程序代碼分享,大家參考使用吧2013-12-12SpringBoot打印詳細(xì)啟動(dòng)異常信息
這篇文章主要介紹了SpringBoot打印詳細(xì)啟動(dòng)異常信息,本文包含了詳細(xì)的過(guò)程解析與案例,概要的說(shuō)明了如何去使用打印啟動(dòng)異常信息,需要的朋友可以參考下2021-06-06