Spring Boot整合邮箱发送邮件实例
作者:it永远的学习者
大家好,本篇文章主要讲的是Spring Boot整合邮箱发送邮件实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
1. 准备工作
登录进自己的 qq 邮箱获取授权码
设置 – 账户 – POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
点击开始获取授权码,将授权码保存下来,下面代码整合的时候需要使用
2. 代码整合
创建一个 Spring Boot 项目,引入以下依赖
<!-- email --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
配置文件
server: port: 8080 spring: # email 配置 mail: # SMTP 服务器地址 host: smtp.qq.com username: # 你的qq 邮箱地址 password: # 授权码,上面从 qq 邮箱官网得到的授权码 port: 587 protocol: smtp default-encoding: UTF-8
创建一个邮件收件人信息的实体类
/** * @author lishisen * @description 邮件收件人信息 * @date 2022/1/9 9:37 **/ @AllArgsConstructor @NoArgsConstructor @Data public class EmailModel implements Serializable { // 收件人邮箱地址 private String receiveEmailAddress; // 邮箱主题 private String emailTheme; // 邮件内容 private String emailContent; }
创建一个服务提供类,SendEmailService.java
/** * @author lishisen * @description 邮件发送服务类 * @date 2022/1/9 9:40 **/ @Slf4j @Component public class SendEmailService { @Autowired private JavaMailSender javaMailSender; @Autowired private JavaMailSenderImpl javaMailSenderImpl; // 发送者地址 private String posterAddress = "1876419736@qq.com"; // 发送者名称 private String posterName = "测试邮件发送"; /** * 文本发送 **/ public void sendEmailAsText(final EmailModel emailModel) { System.out.println(emailModel.toString()); MimeMessagePreparator mimeMessagePreparator = mimeMessage -> { mimeMessage.setFrom(posterAddress); mimeMessage.setRecipients(Message.RecipientType.TO, emailModel.getReceiveEmailAddress()); mimeMessage.setText("发送者地址:" + posterAddress + '\n' + "发送者名称:" + posterName + '\n' + "内容:" + emailModel.getEmailContent()); }; try { this.javaMailSender.send(mimeMessagePreparator); log.info("邮箱已返送至[{}]邮箱!", emailModel.getReceiveEmailAddress()); } catch (MailException e) { log.error("邮箱异常:{}", e); } } /** * html 网页发送 * 该方法为同步方法 **/ public void sendEmailAsSysExceptionHtml(final EmailModel emailModel, String info) { MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage(); MimeMessageHelper mimeMessageHelper; try { mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); mimeMessageHelper.setFrom(posterAddress); mimeMessageHelper.setTo(emailModel.getReceiveEmailAddress()); mimeMessageHelper.setSubject(emailModel.getEmailTheme()); mimeMessageHelper.setText( "<!DOCTYPE html>\n" + "<html lang=\"en\">\n" + "<head>\n" + " <meta charset=\"UTF-8\">\n" + " <title>Title</title>\n" + "</head>\n" + "<body>\n" + "<h2>" + info + "</h2>\n" + "<h3>您的验证码为:<span style='color: red'" + ">" + emailModel.getEmailContent() + "</span> " + ",请在 5 分钟内进行验证</h3>\n" + "</body>\n" + "</html>" , true); this.javaMailSender.send(mimeMessage); log.info("邮箱已返送至[{}]邮箱!", emailModel.getReceiveEmailAddress()); } catch (MessagingException e) { e.printStackTrace(); } } }
测试使用
@Autowired private SendEmailService sendEmailService; @Test public void sendMailTest() { // 创建收件人实体类,封装收件人的信息 EmailModel emailModel = new EmailModel(); emailModel.setReceiveEmailAddress("18xxxxxqq.com"); emailModel.setEmailTheme("测试发送"); emailModel.setEmailContent("测试发送邮箱主体信息内容"); // 调用发送服务方法执行发送任务 sendEmailService.sendEmailAsText(emailModel); System.out.println("邮件发送成功"); }
总结
到此这篇关于Spring Boot整合邮箱发送邮件实例的文章就介绍到这了,更多相关Spring Boot邮箱发送内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!