sbt中使用JavaMailSender发送邮件
2021/5/25 14:27:48
本文主要是介绍sbt中使用JavaMailSender发送邮件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Spring提供了非常好用的JavaMailSender
接口实现邮件发送。
简单实现
在Spring Boot的工程中的pom.xml
中引入spring-boot-starter-mail
依赖:
<!--引入发送邮件的启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> |
如其他自动化配置模块一样,在完成了依赖引入之后,只需要在application.properties
中配置相应的属性内容。
下面以QQ邮箱为例,在application.properties
中加入如下配置(注意替换发件人邮箱号和密码):
#发件人邮箱 spring.mail.username=用户名 #邮箱密码(授权码) spring.mail.password=密码 #邮箱主机 spring.mail.host=smtp.qq.com #配置安全连接 spring.mail.properties.mail.smtp.ssl.enable=true |
通过写个controller控制器来实现发送一封简单邮件:
@RestController public class HelloSbtController { @Autowired JavaMailSenderImpl mailSender; @GetMapping("/sendEmail") public String sendEmail() { //设置邮件信息 SimpleMailMessage message = new SimpleMailMessage(); //主题 message.setSubject("一封简单邮件"); //内容 message.setText("使用SpringBoot发送一封简单邮件"); //收件人 message.setTo("xxxxxxxxx@qq.com"); //发件人 message.setFrom("xxxxxxxxx@qq.com"); //发送邮件 mailSender.send(message); return "邮件发送成功"; } |
运行代码,在浏览器地址栏里输入localhost:8088/sendEmail,看见页面显示,“邮件发送成功”。
(注意:要先在application.properties里配置端口号:
server.port=8088 |
到这里,一个简单的邮件发送就完成了。
由于Spring Boot的starter模块提供了自动化配置,所以在引入了
spring-boot-starter-mail
依赖之后,会根据配置文件中的内容去创建JavaMailSender
实例,因此我们可以直接在需要使用的地方直接@Autowired
来引入邮件发送对象。
进阶使用
在上例中,我们通过使用SimpleMailMessage
实现了简单的邮件发送,但是实际使用过程中,我们还可能会带上附件等。这个时候我们就需要使用MimeMessage
来设置复杂一些的邮件内容。
发送附件
这里使用配置文件来实现发送邮件,封装邮件功能
创建一个邮件实体类(@DATA 这个注解需要在pom.xml中加入lombok依赖):
/** * @Auther: Administrator * @Date: 2021年 05月22日 16:56 * @Description: 邮件实体类 */ @Data @Component @ConfigurationProperties(prefix = "email") public class Email { // 邮件主题 private String subject; // 内容 private String content; // 发件人 private String from; // 收件人 private String to; // 附件地址 private String filePath; } |
创建一个EmailUtil工具类:
/** * @Auther: Administrator * @Date: 2021年 05月22日 17:24 * @Description: 发送邮件工具类 */ public class EmailUtil { public static void sendMail(JavaMailSender javaMailSender,Email email) throws MessagingException { // 使用JavaMail的MimeMessage,支付更加复杂的邮件格式和内容 MimeMessage mimeMessage = javaMailSender.createMimeMessage(); // 创建MimeMessageHelper对象,处理MimeMessage的辅助类 MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true); // 使用辅助类MimeMessage设定参数 // 收件人 messageHelper.setTo(email.getTo()); // 发件人 messageHelper.setFrom(email.getFrom()); // 邮件主题 messageHelper.setSubject(email.getSubject()); // 邮件内容 messageHelper.setText(email.getContent()); // 获取附件路径 FileSystemResource file = new FileSystemResource(new File(email.getFilePath())); // 获取附件名 String fileName = email.getFilePath().substring(email.getFilePath().lastIndexOf(File.separator)); // 添加附件 messageHelper.addAttachment(fileName, file); // 发送邮件 javaMailSender.send(mimeMessage); } } |
在上面的controller中加入如下方法(通过MimeMessageHelper来发送一封带有附件的邮件):
@Autowired private Email email; @Resource private JavaMailSenderImpl javaMailSender; @GetMapping("/sendEmail") public String sendEmail() throws MessagingException { EmailUtil.sendMail(javaMailSender, email); return "邮件发送成功"; } |
创建一个配置文件application.yml(它与application.properties互补,注意格式),填上我们需要发送的邮件相关内容:
email: subject: (邮件主题) content: (邮件内容) from: (发件人) to: (收件人) filePath: (附件地址) |
运行代码,在浏览器地址栏里输入localhost:8088/sendEmail,看见页面显示,“邮件发送成功”。
到这里,一个带附件的邮件发送就完成了。
这篇关于sbt中使用JavaMailSender发送邮件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)