Java HtmlEmail 郵件發送的簡略完成代碼。本站提示廣大學習愛好者:(Java HtmlEmail 郵件發送的簡略完成代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是Java HtmlEmail 郵件發送的簡略完成代碼正文
Java 項目中經常回碰到發送郵件
Java 發送郵件有幾種,明天先給年夜家引見用 HtmlEmail 來發送郵件,我這裡是用 Maven 來搭建的
HtmlEmail 可以抄帶HTML
起首 須要導入jar 包
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version>1.4</version> </dependency>
然後我們來樹立一個發送郵件的 Mail 類 JavaBean
public class Mail implements Serializable{ private static final long serialVersionUID = -6390720891150157552L; public static final String ENCODEING = "UTF-8"; // 辦事器地址 private String host; // 發件人的郵箱 private String sender; // 發件人昵稱 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; } }
然後再來創立一個發送郵件的對象類 MailUtil
public class MailUtil { public Boolean send(Mail mail){ HtmlEmail email = new HtmlEmail(); try { // 這裡是SMTP發送辦事器的名字:163的以下:"smtp.163.com" email.setHostName(mail.getHost()); // 字符編碼集的設置 email.setCharset(Mail.ENCODEING); // 發送人的郵箱 email.setFrom(mail.getSender(), mail.getName()); // 假如須要認證信息的話,設置認證:用戶名-暗碼。分離為發件人在郵件辦事器上的注冊稱號和暗碼 email.setAuthentication(mail.getUsername(), mail.getPassword()); // 設置收件人信息 setTo(email, mail); // 設置抄送人信息 setCc(email, mail); // 設置密送人信息 setBcc(email, mail); // 要發送的郵件主題 email.setSubject(mail.getSubject()); // 要發送的信息,因為應用了HtmlEmail,可以在郵件內容中應用HTML標簽 email.setHtmlMsg(mail.getMessage()); // 發送 email.send(); if (Log.isDebugEnabled()) { Log.info(mail.getSender() + " 發送郵件到 " + mail.getReceiver()); } return true; } catch (Exception e) { e.printStackTrace(); Log.info(mail.getSender() + " 發送郵件到 " + 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"); // 發件人郵件地址 mail.setSender("[email protected]"); // 發件人稱號 mail.setName("Java.小先生"); // 登錄賬號,普通都是和郵箱名一樣吧 mail.setUsername("[email protected]"); // 發件人郵箱的登錄暗碼 mail.setPassword("xxxxxxxx"); // 吸收人 mail.setReceiver("[email protected]"); 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>我來看看郵件能否發送勝利呢</h1><br/><br/>"; html += "<p>上面是經由過程該協定可以創立一個指向電子郵件地址的超等鏈接,經由過程該鏈接可以在Internet中發送電子郵件</p><br/>"; html += "<a href=\"mailto:[email protected]?[email protected]&body=use mailto sample\">send mail</a>"; html += "</div>"; html += "</body></html>"; mail.setMessage(html); new MailUtil().send(mail); }
趕忙登錄郵箱看看吧
來看看這裡 主題 內容,發送人稱號和收件人稱號能否和代碼寫的一樣呢,假如一樣的話,祝賀你勝利啦
到這,其實發送郵件就算完了!!!
這裡在煩瑣最初一個小常識點 mailto
mailto: 經由過程該協定可以創立一個指向電子郵件地址的超等鏈接,經由過程該鏈接可以在Internet中發送電子郵件
我們點擊 send mail 會翻開你郵件客戶端一個發送界面,假如你有寫抄帶信息,也會給你帶上
以上這篇Java HtmlEmail 郵件發送的簡略完成代碼就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。