第一,在pom.xml中引入依赖
<!--发送邮件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
第二,在application.properties中进行发送邮件的配置
#邮箱配置
mail.smtp.auth=true
mail.transport.protocol=smtp
mail.send.charset=UTF-8
mail.smtp.port=465
mail.is.ssl=true
mail.host=smtp.163.com
mail.auth.name=自己的邮箱@163.com
mail.auth.password=自己的授权码
mail.smtp.timeout=5000
第三,开始写发送邮件的工具类
package com.xy.mvs.util;
import com.sun.mail.util.MailSSLSocketFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.env.Environment;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.mail.internet.MimeMessage;
import java.security.GeneralSecurityException;
import java.util.Properties;
import javax.annotation.Resource;
/**
* @Author
* @Description EmailUtils
* @date 2018/12/21 11:17
*/
@Component
public class EmailUtils {
private static final Logger logger = LoggerFactory.getLogger(EmailUtils.class);
@Resource
private Environment env;
private static String auth;
private static String host;
private static String protocol;
private static int port;
private static String authName;
private static String password;
private static boolean isSSL;
private static String charset ;
private static String timeout;
@PostConstruct
public void initParam () {
auth = env.getProperty("mail.smtp.auth");
host = env.getProperty("mail.host");
protocol = env.getProperty("mail.transport.protocol");
port = env.getProperty("mail.smtp.port", Integer.class);
authName = env.getProperty("mail.auth.name");
password = env.getProperty("mail.auth.password");
charset = env.getProperty("mail.send.charset");
isSSL = env.getProperty("mail.is.ssl", Boolean.class);
timeout = env.getProperty("mail.smtp.timeout");
}
/**
* 生成邮件标题
*/
public static String EmailSubject(String workListNumber){
String subject = "待回访工单" + workListNumber;
return subject;
}
/**
* 生成邮件内容
*/
public static String EmailContent(String workListNumber,Integer workId){
String content = "工单:" + workListNumber + "维修已完成,回访请点击 <a style='cursor: pointer' href='http://192.168.1.158:8080/emailLogin?id="
+ workId + "'>工单访问链接</a>";
return content;
}
/**
* 发送邮件
*/
public static boolean sendEmail(String subject, String toUser, String content){
boolean flag = true;
try {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost(host);
javaMailSender.setUsername(authName);
javaMailSender.setPassword(password);
javaMailSender.setDefaultEncoding(charset);
javaMailSender.setProtocol(protocol);
javaMailSender.setPort(port);
Properties properties = new Properties();
properties.setProperty("mail.smtp.auth", auth);
properties.setProperty("mail.smtp.timeout", timeout);
if(isSSL){
MailSSLSocketFactory sf = null;
try {
sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
properties.put("mail.smtp.ssl.enable", "true");
properties.put("mail.smtp.ssl.socketFactory", sf);
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
}
javaMailSender.setJavaMailProperties(properties);
MimeMessage mailMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true);
messageHelper.setTo(toUser);
messageHelper.setFrom(authName);
messageHelper.setSubject(subject);
messageHelper.setText(content, true);
javaMailSender.send(mailMessage);
} catch (Exception e) {
logger.error("发送邮件失败!", e);
flag = false;
}
return flag;
}
}
好了,我们在测试类里测试一下
@Test
public void test(){
boolean flag = EmailUtils.sendEmail(EmailUtils.EmailSubject("181219-000016"),"15222311710@163.com",EmailUtils.EmailContent("181219-000016",3));
System.out.println(flag);
}
想要用163邮箱自动发送邮件,必须先获取授权码,才可以通过第三方发送邮件
获取授权码
如图所示,登录163邮箱,点击设置,选择POP3/SMTP/IMAP,开启SMIP
在左侧导航栏点击客户端授权密码可重置授权码
> OK,发送成功