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("chenhao@kezhanbang.cn");
// 發件人稱號
mail.setName("Java.小先生");
// 登錄賬號,普通都是和郵箱名一樣吧
mail.setUsername("chenhao@kezhanbang.cn");
// 發件人郵箱的登錄暗碼
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>我來看看郵件能否發送勝利呢</h1><br/><br/>";
html += "<p>上面是經由過程該協定可以創立一個指向電子郵件地址的超等鏈接,經由過程該鏈接可以在Internet中發送電子郵件</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);
}
趕忙登錄郵箱看看吧
來看看這裡 主題 內容,發送人稱號和收件人稱號能否和代碼寫的一樣呢,假如一樣的話,祝賀你勝利啦
到這,其實發送郵件就算完了!!!
這裡在煩瑣最初一個小常識點 mailto
mailto: 經由過程該協定可以創立一個指向電子郵件地址的超等鏈接,經由過程該鏈接可以在Internet中發送電子郵件
我們點擊 send mail 會翻開你郵件客戶端一個發送界面,假如你有寫抄帶信息,也會給你帶上
以上這篇Java HtmlEmail 郵件發送的簡略完成代碼就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。