一、发送简单文本邮件
在Springboot中,可以使用JavaMailSender类很方便地发送简单的文本邮件。首先,需要在其配置文件中添加邮件配置,如下所示:
spring.mail.host=smtp.qq.com spring.mail.username=YOUR_USERNAME@qq.com spring.mail.password=YOUR_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.properties.mail.smtp.ssl.enable=true spring.mail.default-encoding=UTF-8
然后,在需要发送邮件的地方,可以使用如下代码来发送简单文本邮件:
@Autowired private JavaMailSender mailSender; public void sendSimpleEmail() { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("YOUR_USERNAME@qq.com"); message.setTo("recipient@example.com"); message.setSubject("Subject"); message.setText("Body"); mailSender.send(message); }
二、发送HTML邮件
如果需要发送带有HTML标签的邮件,可以使用MimeMessageHelper类来实现。具体步骤如下:
- 在邮件配置文件中添加HTML邮件配置
- 使用MimeMessageHelper类构造HTML邮件内容
- 调用JavaMailSender类的send方法发送邮件
具体代码实现如下:
@Autowired private JavaMailSender mailSender; public void sendHtmlEmail() throws MessagingException { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom("YOUR_USERNAME@qq.com"); helper.setTo("recipient@example.com"); helper.setSubject("Subject"); helper.setText("<html><body><p>Html <b>body</b> with a <a href='http://www.example.com'>link</a>.</p></body></html>", true); mailSender.send(message); }
三、发送带有附件的邮件
类似地,如果需要在邮件中添加附件,可以使用MimeMessageHelper类构造含有附件的MimeMessage。具体代码实现如下:
@Autowired private JavaMailSender mailSender; public void sendEmailWithAttachment() throws MessagingException { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom("YOUR_USERNAME@qq.com"); helper.setTo("recipient@example.com"); helper.setSubject("Subject"); helper.setText("Body"); ClassPathResource file = new ClassPathResource("attachment.pdf"); helper.addAttachment("attachment.pdf", file); mailSender.send(message); }
四、发送图片邮件
如果需要在邮件中嵌入图片,可以使用MimeMessageHelper类构造含有嵌入式图片的MimeMessage。具体代码实现如下:
@Autowired private JavaMailSender mailSender; public void sendEmailWithInlineImage() throws MessagingException { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom("YOUR_USERNAME@qq.com"); helper.setTo("recipient@example.com"); helper.setSubject("Subject"); helper.setText("<html><body><img src='cid:identifier1234'></body></html>", true); ClassPathResource image = new ClassPathResource("image.jpg"); helper.addInline("identifier1234", image); mailSender.send(message); }
五、使用Thymeleaf来发送HTML邮件
使用Thymeleaf模板引擎可以方便地构造HTML格式的邮件。首先,在pom.xml文件中添加Thymeleaf依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
然后,在邮件配置文件中增加如下配置:
spring.thymeleaf.check-template-location=true spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html spring.thymeleaf.cache=false
最后,在需要发送邮件的地方,使用Thymeleaf模板渲染邮件内容,具体实现如下:
@Autowired private JavaMailSender mailSender; @Autowired private TemplateEngine templateEngine; public void sendEmailWithThymeleafTemplate() throws MessagingException { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom("YOUR_USERNAME@qq.com"); helper.setTo("recipient@example.com"); helper.setSubject("Subject"); Context context = new Context(); context.setVariable("title", "邮件标题"); context.setVariable("message", "邮件内容"); String htmlContent = templateEngine.process("email-template", context); helper.setText(htmlContent, true); mailSender.send(message); }
六、小结
在Springboot中,发送邮件有多种方式,可以根据不同的需求选择不同的方法。在此,我们介绍了发送简单文本邮件、发送HTML邮件、发送带有附件的邮件、发送图片邮件以及使用Thymeleaf来发送HTML邮件等不同方法。
原创文章,作者:BOYIA,如若转载,请注明出处:https://www.506064.com/n/371400.html