SpringBoot_Mail使⽤thymeleaf作为邮件的模板
⽂章⽬录
1. application.properties配置
spring.mail.host=smtp.126
spring.mail.default-encoding=utf-8
spring.mail.password=qazwsxedc123
spring.mail.port=465
#邮箱的login name
spring.mail.username=你的邮箱登录名称
spring.mail.address=这⾥是⾃定义的,邮件发送⽅地址
2. 邮件service
使⽤springboot 内置的mail 启动器构建的邮件javaMailSender对象,可以发送简单⽂字邮件,也可发送复杂的html邮件(⽂字、图⽚和附件等等)
public class MailService {
@Autowired
private JavaMailSender javaMailSender;
@Value("${spring.mail.address:#{null}}")
String mailAddress;
@Autowired
private SpringTemplateEngine templateEngine;
/**
* 发送简单的⽂本邮件
* @param map
* @throws IOException
*/
public void sendSimpleMail(Map<String,Object> map)throws IOException {
SimpleMailMessage message =new SimpleMailMessage();
//发送⼈
message.setFrom(mailAddress);
message.setTo(String.("tos")));
//邮件主题
message.setSubject(String.("subject")));
message.setSentDate(new Date());
message.setText(String.("content")));
javaMailSender.send(message);
}
/**
* 使⽤thymeleaf 发送模板邮件
*/
public void sendHtmlMail(String subject, tos)throws MessagingException {
MimeMessage mimeMessage = ateMimeMessage();
MimeMessageHelper messageHelper =new MimeMessageHelper(mimeMessage,true);
messageHelper.setFrom(mailAddress);
messageHelper.setTo(tos);
messageHelper.setSubject(subject);
messageHelper.setSentDate(new Date());
messageHelper.setReplyTo(mailAddress);
Context context =new Context();
context.setVariable("templateParams", UUID.randomUUID());
//使⽤thymeleaf模板将参数转换成string⽂字
thymeleaf用法String emailText = templateEngine.process("mail", context);
/*
emailText ===> 经过thymeleaf 引擎解析过的模板
true    ====>true: text/html false:text/plain
*/
messageHelper.setText(emailText,true);
javaMailSender.send(mimeMessage);
}
}
3. 遇到的问题
上述(1)中的application.properties⽂件中针对的是在开发测试阶段的配置
2) 假如你的服务是要部署到ECS上的话,现在⼀般的服务商都会默认禁掉ECS上的端⼝25(为了安全),那我们需要通过ssl⽅式来与邮件
服务器通讯,下⾯是ssl⽅式的邮件配置
spring.mail.host=smtp.126
spring.mail.default-encoding=utf-8
spring.mail.password=qazwsxedc123
spring.mail.port=465
#邮箱的login name
spring.mail.username=你的邮箱登录名称
spring.mail.address=这⾥是⾃定义的,邮件发送⽅地址
spring.mail.properties.mail.able=true
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.socketFactory.class=javax.ssl.SSLSocketFactory spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.able=true
spring.mail.properties.mail.quired=true
3.1 JavaMail原⽣的⼀些属性
spring.mail.properties.mail.able=true
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.socketFactory.class=javax.ssl.SSLSocketFactory spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.able=true
spring.mail.properties.mail.quired=true
属性名属性类
说明
mail.stmp.host String SMTP服务器地址,如smtp.qq mail.stmp.port int SMTP服务器端⼝号,默认为25 mail.stmp.auth boolean SMTP服务器是否需要⽤户认证,默认为false mail.stmp.user String SMTP默认的登陆⽤户名
mail.stmp.from String默认的邮件发送源地址
mail.stmp.socketFactory.class String socket⼯⼚类类名,通过设置该属性可以覆盖提供者默认的实现,必须实现javax.SocketFactory接
mail.stmp.socketFactory.port int指定socket⼯⼚类所⽤的端⼝号,如果没有规定,则使⽤默认的端⼝号
mail.smtp.socketFactory.fallback boolean 设置为true时,当使⽤指定的socket类创建socket失败后,将使⽤Java.Socket创建socket,默认
为true
mail.stmp.timeout int I/O连接超时时间,单位为毫秒,默认为永不超时

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。