一文快速搞懂Springboot发送邮件操作
写在前面: 从2018年底开始学习SpringBoot,也用SpringBoot写过一些项目。这里对学习Springboot的一些知识总结记录一下。如果你也在学习SpringBoot,可以关注我,一起学习,一起进步。 目录 开通QQ邮箱的POP3/SMPT协议 发送邮件所需要的依赖文件 相关配置 发送邮件方法 开通QQ邮箱的POP3/SMPT协议 打开qq邮箱点击设置,之后点击账户,往下翻,如图。 找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,点击开启,开启后会出现一个授权码,发送邮件时会用到。 发送邮件所需要的依赖文件 org.spr 在本文中,我们将深入探讨如何使用SpringBoot框架来实现邮件发送功能。SpringBoot简化了Java应用程序的开发,包括集成各种服务,比如邮件服务。我们将会介绍如何配置SpringBoot以发送邮件,以及如何编写代码来执行实际的邮件发送操作。 我们需要开通邮箱的POP3/SMTP协议。对于QQ邮箱,这可以通过登录邮箱,进入设置,然后找到账户选项来完成。在账户设置页面底部,可以看到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”项,点击开启此服务,系统会生成一个授权码,这个授权码将在发送邮件时作为密码使用。 接下来,我们要引入SpringBoot发送邮件所需的依赖。在Maven或Gradle项目中,添加`spring-boot-starter-mail`依赖。对于Maven,可以在pom.xml文件中添加如下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> ``` 配置邮件服务参数是在`application.properties`文件中完成的。以下是一些基本的配置示例: ```properties # 设置字符集 spring.mail.default-encoding=UTF-8 # SMTP服务器地址 spring.mail.host=smtp.qq.com # 发送者的邮箱密码,即授权码 spring.mail.password=your_authorization_code # 端口号 spring.mail.port=587 # 协议 spring.mail.protocol=smtp # 发送者的邮箱账号 spring.mail.username=your_email@example.com ``` 在配置完成后,我们可以通过SpringBoot的JavaMailSender接口发送邮件。下面是一个简单的发送邮件的示例代码: ```java @RestController public class EmailController { @Value("${spring.mail.username}") private String fromEmail; @Autowired private JavaMailSender javaMailSender; @RequestMapping("/send") public String sendSimpleEmail() { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(fromEmail); message.setTo("recipient@example.com"); message.setSubject("SpringBoot发送的简单邮件"); message.setText("这是邮件内容"); try { javaMailSender.send(message); return "邮件发送成功"; } catch (Exception e) { return "邮件发送失败:" + e.getMessage(); } } } ``` 以上代码展示了如何创建一个简单的邮件并使用JavaMailSender发送。如果需要发送带附件的邮件,可以使用`MimeMessageHelper`类。以下是一个带附件的邮件发送示例: ```java @RequestMapping("/sendWithAttachment") public String sendEmailWithAttachment() throws MessagingException { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(fromEmail); helper.setTo("recipient@example.com"); helper.setSubject("SpringBoot发送的带有附件的邮件"); helper.setText("这是邮件内容", true); File attachmentFile = new File("path/to/your/file.txt"); FileSystemResource file = new FileSystemResource(attachmentFile); helper.addAttachment("附件名称", file); javaMailSender.send(message); return "带有附件的邮件发送成功"; } ``` 在这个例子中,我们创建了一个`MimeMessageHelper`实例,用来处理更复杂的邮件结构,如添加附件。通过调用`addAttachment`方法,我们可以将本地文件作为邮件附件发送。 SpringBoot提供了一种简单而强大的方式来集成邮件服务。只需配置正确的参数,以及使用提供的`JavaMailSender`和`MimeMessageHelper`接口,就可以轻松地实现邮件发送功能,无论是发送纯文本邮件还是包含附件的邮件。