zhuangjinxin / spring-boot-learn

Spring Boot 学习总结
1 stars 0 forks source link

Spring Boot 发送邮件 #1

Open zhuangjinxin opened 6 years ago

zhuangjinxin commented 6 years ago

添加依赖:

dependencies {
    compile('org.springframework.boot:spring-boot-starter-mail')
}

在application.properties文件中配置:

spring.mail.host=smtp.163.com
spring.mail.username=******@163.com
spring.mail.password=******
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

注:spring.mail.password是163邮箱的授权码!

发送邮件代码:

@Autowired
private JavaMailSender javaMailSender;

public String sendEmail(){
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("******@163.com");
    message.setTo("******@163.com");
    message.setSubject("邮件主题");
    message.setText("邮件内容");
    javaMailSender.send(message);
}
zhuangjinxin commented 6 years ago

如何设置和获取163邮箱授权码?

登录网易邮箱->设置->POP3/SMTP/IMAP 点击左侧导航栏中设置客户端授权码->勾选开启->获取短信验证码->输入短信验证码->输入两遍授权码(自己任意设定,字母和数字的组合)即可!

如何设置和获取QQ邮箱授权码?

登录QQ邮箱->设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务->找到POP3/SMTP服务->点击开启->用关联手机号发送配置邮箱客户端1069070069->点击已发送->网页弹窗显示授权码(16位字母),保存即可!

zhuangjinxin commented 6 years ago

可能会出现如下错误:

Failed message 1: javax.mail.MessagingException: STARTTLS is required but host does not support STARTTLS] with root cause

javax.mail.MessagingException: STARTTLS is required but host does not support STARTTLS
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:734)
    at javax.mail.Service.connect(Service.java:366)
    at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:501)
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:421)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:307)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:296)