Java HtmlEmail 郵件發(fā)送的簡單實現(xiàn)代碼
Java 項目中常?;赜龅桨l(fā)送郵件
Java 發(fā)送郵件有幾種,今天先給大家介紹用 HtmlEmail 來發(fā)送郵件,我這里是用 Maven 來搭建的
HtmlEmail 可以抄帶HTML
首先 需要導入jar 包
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version>1.4</version> </dependency>
然后我們來建立一個發(fā)送郵件的 Mail 類 JavaBean
public class Mail implements Serializable{ private static final long serialVersionUID = -6390720891150157552L; public static final String ENCODEING = "UTF-8"; // 服務器地址 private String host; // 發(fā)件人的郵箱 private String sender; // 發(fā)件人昵稱 private String name; // 賬號 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; } }
然后再來創(chuàng)建一個發(fā)送郵件的工具類 MailUtil
public class MailUtil { public Boolean send(Mail mail){ HtmlEmail email = new HtmlEmail(); try { // 這里是SMTP發(fā)送服務器的名字:163的如下:"smtp.163.com" email.setHostName(mail.getHost()); // 字符編碼集的設置 email.setCharset(Mail.ENCODEING); // 發(fā)送人的郵箱 email.setFrom(mail.getSender(), mail.getName()); // 如果需要認證信息的話,設置認證:用戶名-密碼。分別為發(fā)件人在郵件服務器上的注冊名稱和密碼 email.setAuthentication(mail.getUsername(), mail.getPassword()); // 設置收件人信息 setTo(email, mail); // 設置抄送人信息 setCc(email, mail); // 設置密送人信息 setBcc(email, mail); // 要發(fā)送的郵件主題 email.setSubject(mail.getSubject()); // 要發(fā)送的信息,由于使用了HtmlEmail,可以在郵件內(nèi)容中使用HTML標簽 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; } } /** * 設置收件人信息 * * @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()); } } } } /** * 設置抄送人信息 * * @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()); } } } } /** * 設置密送人信息 * * @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()); } } } } }
寫到這里,大概也就差不多了,萬里長征只有最后一步了
測試,測試,測試
這里編寫一個 junit 方法來測試
@Test public void sendMail(){ Mail mail = new Mail(); // 設置郵件服務器 mail.setHost("smtp.exmail.qq.com"); // 發(fā)件人郵件地址 mail.setSender("chenhao@kezhanbang.cn"); // 發(fā)件人名稱 mail.setName("Java.小學生"); // 登錄賬號,一般都是和郵箱名一樣吧 mail.setUsername("chenhao@kezhanbang.cn"); // 發(fā)件人郵箱的登錄密碼 mail.setPassword("xxxxxxxx"); // 接收人 mail.setReceiver("huntertochen@163.com"); mail.setReceiverName("我要女票"); mail.setSubject("萬里長征最后一步測試"); 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>我來看看郵件是否發(fā)送成功呢</h1><br/><br/>"; html += "<p>下面是通過該協(xié)議可以創(chuàng)建一個指向電子郵件地址的超級鏈接,通過該鏈接可以在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); }
趕緊登錄郵箱看看吧
來看看這里 主題 內(nèi)容,發(fā)送人名稱和收件人名稱是否和代碼寫的一樣呢,如果一樣的話,恭喜你成功啦
到這,其實發(fā)送郵件就算完了?。?!
這里在啰嗦最后一個小知識點 mailto
mailto: 通過該協(xié)議可以創(chuàng)建一個指向電子郵件地址的超級鏈接,通過該鏈接可以在Internet中發(fā)送電子郵件
我們點擊 send mail 會打開你郵件客戶端一個發(fā)送界面,如果你有寫抄帶信息,也會給你帶上
以上這篇Java HtmlEmail 郵件發(fā)送的簡單實現(xiàn)代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Dwr3.0純注解(純Java Code配置)配置與應用淺析一之零配置文件化
Dwr對我來說最重要的功能點就是反向Ajax調(diào)用,通俗來將就是后端可以直接調(diào)用前端的JS方法(只要在所能訪問的范圍內(nèi)),這也就是Dwr的真正來由,當然它也有最基本的前端直接調(diào)用后端的特性,省去了我們經(jīng)常的一般Ajax調(diào)用2016-04-04springboot后端如何實現(xiàn)攜帶token登陸
這篇文章主要介紹了springboot后端如何實現(xiàn)攜帶token登陸,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11