依赖
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.4</version>
</dependency>
代码
import javax.mail.*;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
public class MailUtil {
public static String account = "seldom@cm.io";
public static String password = "123456";
public static String myEmailSMTPHost = "smtp.ym.163.com";
public static void sendMail(String to, String code) {
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", myEmailSMTPHost);
props.setProperty("mail.smtp.auth", "true");
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(account, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(account));
message.setRecipient(RecipientType.TO, new InternetAddress(to));
message.setSubject("来自*****的激活邮件");
message.setContent("<h1>来自****的激活邮件,您的验证码是:" + code, "text/html;charset=UTF-8");
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
public static void findPasswordMail(String to, String code) {
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", myEmailSMTPHost);
props.setProperty("mail.smtp.auth", "true");
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(account, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(account));
message.setRecipient(RecipientType.TO, new InternetAddress(to));
message.setSubject("来自平台的验证邮件");
message.setContent("<h1>来自平台的验证邮件,请点击以下链接进行重置密码:</h1><h3><a href='http://localhost:10080/Demo_JavaMail/check?code=" + code + "'>http://localhost:10080/Demo_JavaMail/check?code=" + code + "</h3>", "text/html;charset=UTF-8");
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail) throws Exception {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(sendMail, "某某网", "UTF-8"));
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "XX用户", "UTF-8"));
message.setSubject("邮件主题", "UTF-8");
message.setContent("邮件正文", "text/html;charset=UTF-8");
message.setSentDate(new Date());
message.saveChanges();
return message;
}
public static void main(String[] args) {
MailUtil mailUtil = new MailUtil();
mailUtil.sendMail("zhangqipaq@163.com", "4312");
}
}
验证码模板
private static String content = "<!DOCTYPE html>\n" +
"<html>\n" +
"<head>\n" +
"<title></title>\n" +
"<style>\n" +
".qmbox {\n" +
"\tpadding: 0;\n" +
"}\n" +
".qm_con_body_content {\n" +
"\theight: auto;\n" +
"\tmin-height: 100px;\n" +
"\t_height: 100px;\n" +
"\tword-wrap: break-word;\n" +
"\tfont-size: 14px;\n" +
"\tfont-family: \"lucida Grande\", Verdana, \"Microsoft YaHei\";\n" +
"}\n" +
".body {\n" +
"\tline-height: 170%%;\n" +
"}\n" +
"BODY {\n" +
"\tfont-family: \"lucida Grande\", Verdana, \"Microsoft YaHei\";\n" +
"\tfont-size: 12px;\n" +
"\t-webkit-font-smoothing: subpixel-antialiased;\n" +
"}\n" +
"BODY {\n" +
"\tmargin: 0;\n" +
"\tpadding: 0;\n" +
"}\n" +
"BODY {\n" +
"\tbackground-color: #fff;\n" +
"\tfont-size: 12px;\n" +
"}\n" +
"BODY {\n" +
"\tbackground: #fff;\n" +
"}\n" +
"BODY {\n" +
"\tbackground: #fff;\n" +
"\tcolor: #000;\n" +
"\tfont-weight: normal;\n" +
"\tfont-family: \"lucida Grande\", Verdana, \"Microsoft YaHei\";\n" +
"\tpadding: 0 7px 6px 4px;\n" +
"\tmargin: 0;\n" +
"}\n" +
"HTML {\n" +
"\ttop: 0px;\n" +
"}\n" +
".body P {\n" +
"\tline-height: 170%%;\n" +
"}\n" +
"</style>\n" +
"</head>\n" +
"\n" +
"<BODY mu=\"mu\" md=\"md\" module=\"qmReadMail\" context=\"ZC1912-rQ7uXSy7P7HThxdLFCOuY92\"><DIV class=mailcontainer id=qqmail_mailcontainer>\n" +
"<DIV id=mainmail style=\"MARGIN-BOTTOM: 12px; POSITION: relative; Z-INDEX: 1\">\n" +
"<DIV class=body id=contentDiv style=\"FONT-SIZE: 14px; HEIGHT: auto; POSITION: relative; ZOOM: 1; PADDING-BOTTOM: 10px; PADDING-TOP: 15px; PADDING-LEFT: 15px; Z-INDEX: 1; LINE-HEIGHT: 1.7; PADDING-RIGHT: 15px\" οnmοuseοver=getTop().stopPropagation(event); οnclick=\"getTop().preSwapLink(event, 'html', 'ZC1912-rQ7uXSy7P7HThxdLFCOuY92');\">\n" +
"<DIV id=qm_con_body>\n" +
"<DIV class=\"qmbox qm_con_body_content qqmail_webmail_only\" id=mailContentContainer>\n" +
"<DIV class=main style=\"OVERFLOW: hidden; WIDTH: 100%%; BACKGROUND-COLOR: #f7f7f7\">\n" +
"<DIV class=content style=\"BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; BACKGROUND: #ffffff; BORDER-BOTTOM: #cccccc 1px solid; PADDING-BOTTOM: 10px; PADDING-TOP: 10px; PADDING-LEFT: 25px; BORDER-LEFT: #cccccc 1px solid; MARGIN: 50px; PADDING-RIGHT: 25px\">\n" +
"<DIV class=header style=\"MARGIN-BOTTOM: 30px\">\n" +
"<P>亲爱的用户:</P></DIV>\n" +
"<P>您好!您正在进行邮箱验证,本次请求的验证码为:</P>\n" +
"<P><SPAN style=\"FONT-SIZE: 18px; FONT-WEIGHT: bold; COLOR: #f90\">%s</SPAN><SPAN style=\"COLOR: #000000\">(为了保障您帐号的安全性,请在60秒内完成验证)</SPAN></P>\n" +
"<DIV class=footer style=\"MARGIN-TOP: 30px\">\n" +
"<P>%s</P>\n" +
"<P><SPAN style=\"BORDER-BOTTOM: #ccc 1px dashed; POSITION: relative; _display: inline-block\" t=\"5\" times=\"\" isout=\"0\">%s</SPAN></P></DIV>\n" +
"<DIV class=tip style=\"COLOR: #cccccc; TEXT-ALIGN: center\">该邮件为系统自动发送,请勿进行回复 </DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></BODY>\n" +
"</html>\n";
使用
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(account));
message.setRecipient(RecipientType.TO, new InternetAddress(to));
message.setSubject("注册验证码");
message.setContent(String.format(content, "验证码", "xx公司", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())), "text/html;charset=UTF-8");
Transport.send(message);