springboot集成邮件发送的使用示例
- 步骤概述
- 1. 引入依赖
- 2. 配置邮件发送
- 3. 发送简单邮件
- 4. 发送 HTML 邮件
- 5. 发送带附件的邮件
- 6. 定时邮件发送
使用 Spring Boot 发送邮件时,通常的应用场景包括用户注册、密码重置和各种验证流程。这里我将展示一个以验证码发送为例的实现,涵盖了邮件发送的基本配置和高级功能,如定时邮件发送、HTML 内容和附件。
步骤概述
- 引入依赖: 添加 Spring Boot Starter Mail 依赖项。
- 配置邮件发送: 配置 SMTP 服务器和邮件发送器。
- 发送简单邮件: 发送简单的文本邮件。
- 发送 HTML 邮件: 发送包含 HTML 内容的邮件。
- 发送带附件的邮件: 发送包含附件的邮件。
- 定时邮件发送: 使用 Spring 定时任务发送邮件。
1. 引入依赖
在 pom.xml
文件中添加 Spring Boot Starter Mail 依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2. 配置邮件发送
在 application.properties
或 application.yml
中配置 SMTP 服务器信息:
spring.mail.host=your_smtp_host
spring.mail.port=your_smtp_port
spring.mail.username=your_username
spring.mail.password=your_password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
3. 发送简单邮件
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;@Service
public class EmailService {@Autowiredprivate JavaMailSender emailSender;public void sendSimpleMessage(String to, String subject, String text) {SimpleMailMessage message = new SimpleMailMessage();message.setTo(to);message.setSubject(subject);message.setText(text);emailSender.send(message);}
}
4. 发送 HTML 邮件
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;@Service
public class EmailService {@Autowiredprivate JavaMailSender emailSender;public void sendHtmlMessage(String to, String subject, String htmlBody) throws MessagingException {MimeMessage message = emailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setTo(to);helper.setSubject(subject);helper.setText(htmlBody, true);emailSender.send(message);}
}
5. 发送带附件的邮件
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;@Service
public class EmailService {@Autowiredprivate JavaMailSender emailSender;public void sendMessageWithAttachment(String to, String subject, String text, String pathToAttachment) throws MessagingException {MimeMessage message = emailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setTo(to);helper.setSubject(subject);helper.setText(text);FileSystemResource file = new FileSystemResource(new File(pathToAttachment));helper.addAttachment("Attachment", file);emailSender.send(message);}
}
6. 定时邮件发送
使用 Spring 的定时任务功能,在需要定时发送的方法上加上 @Scheduled
注解:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Component
public class ScheduledEmail {private final EmailService emailService;public ScheduledEmail(EmailService emailService) {this.emailService = emailService;}@Scheduled(cron = "0 0 8 * * ?") // 每天早上8点发送邮件public void sendScheduledEmail() {// 发送邮件逻辑emailService.sendSimpleMessage("recipient@example.com", "Subject", "Content");}
}
以上代码提供了基本的邮件发送逻辑和定时任务配置。在实际应用中,请替换相关信息,例如邮件主题、内容、收件人地址以及附件路径等。