一、Maven引入依赖包
<!-- 邮件 -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.5</version>
</dependency>
二、创建邮件信息实体类
邮件信息实体类包含标题、内容、收件人属性,可根据自己的具体需求,增加或调整,参数满足后面的邮件发送接口调用的参数即可。
public class EmailInfo {
/**
* 邮件标题
*/
private String title;
/**
* 邮件内容
*/
private String content;
/**
* 收件人
*/
private List<String> receivers = new ArrayList<String>();
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public List<String> getReceivers() {
return receivers;
}
public void setReceivers(List<String> receivers) {
this.receivers = receivers;
}
}
三、封装邮件发送接口
将邮件发送的api封装一下,调用该接口,传递邮件信息实体对象,即可发送邮件
public class Mailer {
// 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com
private static String mailserver = "smtp.qq.com"; // qq邮箱的 SMTP 服务器地址为: smtp.qq.com
private static String sender = "1242xxxx@qq.com"; // 发件人
private static int smtpPort = 587;
// smtp服务器的认证资料
private static String username = "1242xxxx@qq.com"; // 发件人邮箱账号
// 发件人邮箱的授权码(qq邮箱用第三方发邮件需要在邮箱里开启smtp服务并获取授权码)
private static String password = "frcbjkddomxxxx";
//是否初始化
private static boolean isInited = false;
private static boolean isUse = true;
public static int sendMail(EmailInfo info) {
if (!isInited) {
isInited = true;
}
if (!isUse) {
System.err.println("邮箱设置不启用");
return 1;
}
HtmlEmail email = new HtmlEmail();
// 通过Gmail Server 发送邮件
email.setHostName(mailserver);
email.setSmtpPort(smtpPort);
//设定smtp服务器的认证资料信息
email.setAuthentication(username, password);
email.setStartTLSEnabled(false);
email.setSSLOnConnect(false);
try {
email.setFrom(sender); // 设定发件人
email.addTo(info.getReceivers().toArray(new String[info.getReceivers().size()])); // 设定收件人
email.setCharset("UTF-8"); // 设定内容的语言集
email.setDebug(true);
email.setSubject(info.getTitle()); // 设定主题
email.setHtmlMsg(info.getContent()); // 设定邮件内容
email.send();// 发送邮件
} catch (EmailException e) {
e.printStackTrace();
return 1;
}
return 0;
}
}
四、调用邮件发送接口
调用邮件发送接口,传入参数,即可发送邮件。
@RestController
public class MailSendController {
@RequestMapping("/mailSend")
public String mailSend(){
EmailInfo emailInfo = new EmailInfo();
emailInfo.setTitle("邮件标题");
emailInfo.setContent("尊敬的用户您好!\r\n <br />"+"邮件内容");
emailInfo.getReceivers().add("342817xxxx@qq.com");
Mailer.sendMail(emailInfo);
return "发送成功";
}
}