个人博客网:https://wushaopei.github.io/ (你想要这里多有)
笔记:乘着项目迭代的间隙,把一些可复用的功能从项目中抽取出来,这是其中之一,
一、添加SMTP 及 MAIL 的 pom.xml 依赖
<!--郵箱發送-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

注意: 依赖添加后会要求刷新 springBootConguration 的配置信息,可执行也可不理睬
具体操作如下:
二、配置yml邮箱参数
1、在 application-dev.yml中配置对应的邮箱参数
#邮件配置 email: host: smtp.163.com username: 1598974689@163.com password: 1598974689wsp senderName: 1598974689@163.com #发送提醒邮件的接收方 sendToMail: 1862030785@foxmail.com sendToPeopleName: wen

2、由于是使用SMTP实现邮箱发送,除了提供必要的邮箱、密码等参数外,还要开启邮箱账号的 SMTP 设置,
打勾选中要设置的服务项,通过校验短信息设置授权码,使用授权码代替 邮箱密码 实现邮件的发送,流程很简单的。
三、相关工具类和 实体类的创建
1、邮箱 参数 config
package com.example.poiutis.model.common; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; /** * @ClassName EmailConfig * @Description TODO * @Author wushaopei * @Date 2019/7/25 10:24 * @Version 1.0 */ @Configuration @ConfigurationProperties(prefix = "email", ignoreUnknownFields = false) //@PropertySource("classpath:/application.yml") public class EmailConfig { private String host; private String username; private String password; private String senderName; public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSenderName() { return senderName; } public void setSenderName(String senderName) { this.senderName = senderName; } @Override public String toString() { return "EmailConfig{" + "host='" + host + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + ", senderName='" + senderName + '\'' + '}'; } }

2、 Email 发送实现工具类
package com.example.poiutis.utils.Email; import com.example.poiutis.model.common.EmailConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.util.Properties; /** * @ClassName MailSenderFacade * @Description TODO * @Author wushaopei * @Date 2019/7/25 10:22 * @Version 1.0 */ @Component public class MailSenderFacade { @Autowired private EmailConfig emailConfig; private final Logger logger = LoggerFactory.getLogger(MailSenderFacade.class); public void sendMailHtml(final String toEmail,final String subject,final String text){ try{ JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); javaMailSender.setUsername(emailConfig.getUsername()); javaMailSender.setPassword(emailConfig.getPassword()); javaMailSender.setHost(emailConfig.getHost()); javaMailSender.setPort(25); javaMailSender.setProtocol("smtp"); javaMailSender.setDefaultEncoding("UTF-8"); Properties mailProperties = new Properties(); mailProperties.put("mail.smtp.auth", true); mailProperties.put("mail.smtp.starttls.enable", true); javaMailSender.setJavaMailProperties(mailProperties); MimeMessage mimeMessage = getMimeMessage(toEmail,subject,text, javaMailSender); javaMailSender.send(mimeMessage); logger.info("发往 "+toEmail+" 邮件发送成功"); } catch (MessagingException e) { logger.error("发往 "+toEmail+" 邮件发送异常", e); } } private MimeMessage getMimeMessage(String toEmail,String subject,String text, JavaMailSenderImpl javaMailSender) throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8"); mimeMessageHelper.setFrom(emailConfig.getSenderName()); mimeMessageHelper.setTo(toEmail); mimeMessageHelper.setSubject(subject); mimeMessageHelper.setText(text, true); return mimeMessage; } }

四、测试SMTP功能发送一个邮件试试
@RequestMapping(value = "/please/emailTest", method = RequestMethod.GET) public Object getEmailTest() { Map<String,Object> map = null; try{ map = new HashMap<>(); mailSenderFacade.sendMailHtml("18620307785@163.com", "来自邮箱测试接口邮件", "来自邮箱测试接口邮件"); map.put("state","0"); map.put("message", "导出成功"); }catch (Exception e){ map.put("state","1"); map.put("message", "导出失敗"); e.printStackTrace(); } return map; }

发送成功:
收到的邮件: