前言,使用springboot的JavaMailSender接口实现邮件发送其实非常简单,但是有个问题就是发送的时候需要配置抄送者是自己,不然的就会报异常 org.springframework.mail.MailSendException: Failed messages: com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM 163
1.配置maven,其实就是添加springboot的mail的starter,很容易就记住,这也是springboot集成的好处
<!-- 邮件发送 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.yml配置
spring:
mail:
host: smtp.163.com
username: ****@163.com #自己的邮箱账号
password: ******* #这个不是登录密码而是163授权登录的密码
default-encoding: UTF-8
获取163授权的密码也很简单,只需要去163的网页端,把一下两个开关打开即可
3.功能测试
由于邮件发送功能简单,笔者这里就使用controller简单测试一下
@Autowired
private JavaMailSender javaMailSender;
//发送普通文本邮件
@RequestMapping(value = "/sendMail")
public String sendMail(Model model) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("654321***@163.com"); //发送者
message.setTo("123456***@qq.com"); //接受者
message.setCc("654321***@163.com"); //抄送,填发送者的邮箱即可
message.setSubject("今天天气真好"); //主题
message.setText("你好你好你好!"); //内容
try {
javaMailSender.send(message);
System.out.println("简单邮件已经发送");
} catch (Exception e) {
System.out.println("发送简单邮件时发生异常!"+e.toString());
}
model.addAttribute("msg", "");
return "login";
}
//也可以html邮件
@RequestMapping("/sendHtmlMail")
public void sendHtmlMail() {
String content="<html>\n" +
"<body>\n" +
" <h3>你好你好你好!</h3>\n" +
"</body>\n" +
"</html>";
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
messageHelper.setFrom("654321***@163.com");
messageHelper.setTo("123456***@qq.com");
messageHelper.setSubject("今天天气真好");
messageHelper.setText(content, true);
javaMailSender.send(message);
System.out.println("邮件成功发送");
} catch (MessagingException e) {
System.out.println("发送邮件时发生异常!"+e.toString());
}
}