-
首先需要获取邮箱第三方服务授权码
qq邮箱:
点击账户,往下滑如图所示,我的已经开启了,没开启的可以开启一下
136邮箱:
我现在用的是qq所以网易这个我就没有开启,如果你们用网易的话可以开启,开启之后需要发送短信,验证通过之后会有一个授权码
网易和QQ邮箱都可以,下面我就用QQ邮箱进行展示
2.导入相关依赖
我是在springboot官网下载的
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3.配置yml文件
4.创建一个实体类
这里创建了一个实体类
import java.io.Serializable;
public class EmailModel implements Serializable {
/**
* 收件人姓名
**/
private String recieverName;
/**
* 收件人邮箱地址
**/
private String recieverEmailAddress;
/**
* 邮件主题
**/
private String emailTheme;
/**
* 邮件内容
**/
private String emailContent;
public String getRecieverName() {
return recieverName;
}
public void setRecieverName(String recieverName) {
this.recieverName = recieverName;
}
public String getRecieverEmailAddress() {
return recieverEmailAddress;
}
public void setRecieverEmailAddress(String recieverEmailAddress) {
this.recieverEmailAddress = recieverEmailAddress;
}
public String getEmailTheme() {
return emailTheme;
}
public void setEmailTheme(String emailTheme) {
this.emailTheme = emailTheme;
}
public String getEmailContent() {
return emailContent;
}
public void setEmailContent(String emailContent) {
this.emailContent = emailContent;
}
}
5.工具类
package com.lwy.util;
import com.lwy.pojo.EmailModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.stereotype.Component;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
@Component
public class MailSendUtils {
private static final Logger logger = LoggerFactory.getLogger(MailSendUtils.class);//定义logger,打印日志用的。
/**
* 发送者地址
**/
private static String posterAdress = "2********08@qq.com";
/**
* 发送者姓名
**/
private static final String posterName = "小艳";
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private JavaMailSenderImpl javaMailSenderImpl;
/**
* 文本发送
**/
public void sendEmailAsText(final EmailModel emailModel) {
MimeMessagePreparator mimeMessagePreparator = mimeMessage -> {
mimeMessage.setFrom(posterAdress);
mimeMessage.setRecipients(Message.RecipientType.TO, emailModel.getRecieverEmailAddress());
mimeMessage.setText("<html><body>"
+ "hello:" + emailModel.getRecieverName()
+ "<br>" + "msg:" + emailModel.getEmailContent()
+ "<br>" + "from :" + posterName
+ "</body></html>");
};
try {
this.javaMailSender.send(mimeMessagePreparator);
logger.info("邮件已返送至[{}]邮箱!", emailModel.getRecieverName());
} catch (MailException e) {
logger.error("邮箱异常:{}", e);
}
}
/**
* html 网页发送
* 该方法为同步方法
**/
public void sendEmailAsSysExceptionHtml(final EmailModel emailModel) {//用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。
MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
MimeMessageHelper mimeMessageHelper;
try {
mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setFrom(posterAdress);
mimeMessageHelper.setTo(emailModel.getRecieverEmailAddress());
mimeMessageHelper.setText("<!DOCTYPE html>\n" +
"<html>\n" +
"\t<head>\n" +
"\t\t<meta charset=\"UTF-8\">\n" +
"\t\t<title></title>\n" +
"\t</head>\n" +
"\t<style>\n" +
"\t\tbody,\n" +
"\t\ttable,\n" +
"\t\ttbody,\n" +
"\t\ttr {\n" +
"\t\t\tbackground-color: aquamarine;\n" +
"\t\t\tbackground-size: 100%;\n" +
"\t\t}\n" +
"\t</style>\n" +
"\n" +
"\t<body>\n" +
"\t\t<table border=\"solid 2 px\" align=\"center\" style=\"text-align: center;\">\n" +
"\t\t\t<tbody>\n" +
"\t\t\t\t<tr>\n" +
"\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">时间</td>\n" +
"\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\">" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "</td>\n" +
"\t\t\t\t</tr>\n" +
"\t\t\t\t<tr>\n" +
"\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">信息</td>\n" +
"\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\">" + "测试" + "</td>\n" +
"\t\t\t\t</tr>\n" +
"\t\t\t\t<tr>\n" +
"\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">堆栈</td>\n" +
"\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\" style=\"text-align: left;\">" + emailModel.getEmailContent() + "</td>\n" +
"\t\t\t\t</tr>\n" +
"\t\t\t</tbody>\n" +
"\t\t</table>\n" +
"\t</body>\n" +
"\n" +
"</html>"
, true);
this.javaMailSender.send(mimeMessage);
logger.info("邮件已返送至[{}]邮箱!", emailModel.getRecieverEmailAddress());
} catch (MessagingException e) {
e.printStackTrace();
} catch (MailException e) {
logger.error("邮箱异常:{}", e);
}
}
/**
* 批量发送邮件
*/
public void setBatchMessages(final EmailModel emailModel) {
String[] strArr = {"29*******8@qq.com","16*******8@qq.com"};
MimeMessage mimeMessage = javaMailSender.createMimeMessage();// 通过MimeMessage创建一个MimeMessageHelper msgHelper
MimeMessageHelper messageHelper;
try {
messageHelper = new MimeMessageHelper(mimeMessage, true); 使用MimeMessageHelper设置邮件的发送地址、收件地址、主题以及内容
messageHelper.setFrom(posterAdress); // 发送的邮件来自哪里
messageHelper.setTo(strArr);// 发送的邮件到哪里
messageHelper.setText("<!DOCTYPE html>\n" +
"<html>\n" +
"\t<head>\n" +
"\t\t<meta charset=\"UTF-8\">\n" +
"\t\t<title></title>\n" +
"\t</head>\n" +
"\t<style>\n" +
"\t\tbody,\n" +
"\t\ttable,\n" +
"\t\ttbody,\n" +
"\t\ttr {\n" +
"\t\t\tbackground-color: aquamarine;\n" +
"\t\t\tbackground-size: 100%;\n" +
"\t\t}\n" +
"\t</style>\n" +
"\n" +
"\t<body>\n" +
"\t\t<table border=\"solid 2 px\" align=\"center\" style=\"text-align: center;\">\n" +
"\t\t\t<tbody>\n" +
"\t\t\t\t<tr>\n" +
"\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">时间</td>\n" +
"\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\">" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "</td>\n" +
"\t\t\t\t</tr>\n" +
"\t\t\t\t<tr>\n" +
"\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">信息</td>\n" +
"\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\">" + "测试" + "</td>\n" +
"\t\t\t\t</tr>\n" +
"\t\t\t\t<tr>\n" +
"\t\t\t\t\t<td width=\"200px\" bgcolor=\"coral\">堆栈</td>\n" +
"\t\t\t\t\t<td width=\"80%\" bgcolor=\"azure\" style=\"text-align: left;\">" + emailModel.getEmailContent() + "</td>\n" +
"\t\t\t\t</tr>\n" +
"\t\t\t</tbody>\n" +
"\t\t</table>\n" +
"\t</body>\n" +
"\n" +
"</html>"
, true);
this.javaMailSender.send(mimeMessage);
logger.info("邮箱已返送至[{}]邮箱!", strArr);
logger.info("现在时间为[{}]", new Date());
} catch (Exception e) {
logger.error("邮箱异常:{}", e);
}
}
}
6. controller层
@Controller
@RequestMapping("javaMailController")
public class JavaMailController {
@Autowired
private MailSendUtils mailSendUtils;
@RequestMapping("sendMail")
@ResponseBody
public String sendMail(){
EmailModel emailModel = new EmailModel();
emailModel.setRecieverName("1111");
//接收方的地址
emailModel.setRecieverEmailAddress("163******@qq.com");
//主题
emailModel.setEmailTheme("想吃肉");
//内容
emailModel.setEmailContent("想吃肉");
//调用工具类
mailSendUtils.setBatchMessages(emailModel);
return "ok";
}
}
接下来在前台调用一下就可以了,工具类有三个方法比如批量发送等,可以在controller层测试
这个是批量发送收到的格式,可以自己设置,在设置类,大家感兴趣的可以研究,我就略知一二吧,有不合适不懂的可以评论私信