依賴
<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);
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);
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));
message.setSubject(mailTitle);
message.setContent(mailContent, "text/html;charset=UTF-8");
message.setSentDate(new Date());
message.saveChanges();
Transport transport = session.getTransport();
transport.connect(fromMail, fromMailPwd);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
}
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);
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);
message.setSubject(mailTitle);
message.setContent(mailContent, "text/html;charset=UTF-8");
message.setSentDate(new Date());
message.saveChanges();
Transport transport = session.getTransport();
transport.connect(fromMail, fromMailPwd);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
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 {
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);
}
}