SpringBoot实现发送邮箱

引言
在现代应用程序中,电子邮件通常是不可或缺的一部分。在Spring Boot中,你可以轻松地实现发送不同类型的邮件,包括文本、带附件和HTML邮件。本博客将向你展示如何使用Spring Boot发送这些不同类型的电子邮件。
步骤一:导入依赖
| <dependency> |
| <groupId>org.springframework.boot</groupId> |
| <artifactId>spring-boot-starter-mail</artifactId> |
| </dependency> |
复制
步骤二:配置邮箱信息
| mail: |
| |
| host: smtp.qq.com |
| |
| username: 1111111@qq.com |
| |
| password: abcdefghijklmnopqrstuvwxyz |
| |
| port: 587 |
| |
| smtpAuth: true |
| |
| smtpStarttlsEnable: true |
| |
| smtpStarttlsRequired: true |
| |
| defaultEncoding: UTF-8 |
复制
步骤三:邮箱配置类
| @Data |
| |
| @Component |
| |
| @ConfigurationProperties(prefix = "mail") |
| public class MailConfig { |
| private String host; |
| private String username; |
| private String password; |
| private Integer port; |
| private String smtpAuth; |
| private String smtpStarttlsEnable; |
| private String smtpStarttlsRequired; |
| private String defaultEncoding; |
| |
| @Bean |
| public JavaMailSender javaMailSender() { |
| |
| JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); |
| javaMailSender.setHost(host); |
| javaMailSender.setPort(port); |
| javaMailSender.setUsername(username); |
| javaMailSender.setPassword(password); |
| javaMailSender.setDefaultEncoding(defaultEncoding); |
| |
| Properties properties = new Properties(); |
| properties.setProperty("mail.smtp.auth", smtpAuth); |
| properties.setProperty("mail.smtp.starttls.enable", smtpStarttlsEnable); |
| properties.setProperty("mail.smtp.starttls.required", smtpStarttlsRequired); |
| javaMailSender.setJavaMailProperties(properties); |
| return javaMailSender; |
| } |
| } |
复制
步骤四:创建邮箱工具类
这里的发送人必须设置不然会报异常:501 Mail from address must be same as authorization user.
| @Component |
| public class MailUtils { |
| @Value("${mail.username}") |
| private String username; |
| @Resource |
| private JavaMailSender javaMailSender; |
| |
| |
| |
| |
| |
| |
| |
| |
| public void sendMail(String to, String title, String content) { |
| |
| SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); |
| simpleMailMessage.setFrom(username); |
| simpleMailMessage.setTo(to); |
| simpleMailMessage.setSubject(title); |
| simpleMailMessage.setText(content); |
| |
| javaMailSender.send(simpleMailMessage); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| public void sendEmailToMultipleRecipients(List<String> toList, String title, String content) { |
| SimpleMailMessage message = new SimpleMailMessage(); |
| message.setFrom(username); |
| message.setTo(toList.toArray(new String[0])); |
| message.setSubject(title); |
| message.setText(content); |
| javaMailSender.send(message); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public void sendEmailWithAttachment(String to, String title, String text, String filePath) throws MessagingException { |
| MimeMessage message = javaMailSender.createMimeMessage(); |
| message.setFrom(username); |
| MimeMessageHelper helper = new MimeMessageHelper(message, true); |
| helper.setTo(to); |
| helper.setSubject(title); |
| helper.setText(text); |
| FileSystemResource file = new FileSystemResource(new File(filePath)); |
| helper.addAttachment(FileUtil.getName(filePath), file); |
| javaMailSender.send(message); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public void sendEmailWithAttachment(String to, String title, String text, File file) throws MessagingException { |
| MimeMessage message = javaMailSender.createMimeMessage(); |
| message.setFrom(username); |
| MimeMessageHelper helper = new MimeMessageHelper(message, true); |
| helper.setTo(to); |
| helper.setSubject(title); |
| helper.setText(text); |
| helper.addAttachment(FileUtil.getName(file), file); |
| javaMailSender.send(message); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public void sendHtmlEmail(String to, String title, String htmlContent) throws MessagingException { |
| MimeMessage message = javaMailSender.createMimeMessage(); |
| message.setFrom(username); |
| MimeMessageHelper helper = new MimeMessageHelper(message, true); |
| helper.setTo(to); |
| helper.setSubject(title); |
| helper.setText(htmlContent, true); |
| javaMailSender.send(message); |
| } |
| } |
复制
通过使用Spring Boot和JavaMailSender,你可以轻松地实现发送文本、带附件和HTML邮件的功能。这些示例可以帮助你在你的应用程序中集成邮件发送功能,以便满足不同类型的邮件需求