0


【开发篇】十六、SpringBoot整合JavaMail实现发邮件

文章目录

0、相关协议

  • SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送电子邮件的传输协议
  • POP3(Post Office Protocol - Version 3):用于接收电子邮件的标准协议
  • IMAP(Internet Mail Access Protocol):互联网消息协议,是POP3的替代协议

1、SpringBoot整合JavaMail

STEP1:

加入JavaMail起步依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>
STEP2:

相关配置:

spring:mail:host: smtp.qq.com  # 发邮件,smtp协议,后面.运营商    username:*********@qq.compassword:*********# 不是邮箱的密码,是下面获取的一个授权码

注意password,不是邮箱的登录密码,是一个授权码,获取方式,在QQ邮箱中是【设置】-【邮箱账号】-【开启】

在这里插入图片描述

发送验证短信:

在这里插入图片描述

然后在上个页面点保存更改,(记得点保存更改)复制这个授权码就是password的值,即可配置邮件客户端成功。

在这里插入图片描述
其他类型的邮箱获取方式类似,比如163:

在这里插入图片描述

STEP3:

注入JavaMailSender对象,定义发送邮件的接口

@AutowiredprivateJavaMailSender javaMailSender;

整合完成,下面按简单邮件和复杂邮件来写。简单即普通文本,复杂即超链接、附件等。

2、发送简单邮件

以下用QQ邮箱给163邮箱发一个简单文本的邮件:

//定义接口publicinterfaceSendMailService{voidsendMail();}
//实现类@ServicepublicclassSendMailServiceImplimplementsSendMailService{@AutowiredprivateJavaMailSender javaMailSender;//这些值也可以不硬编码,写在配置文件中@Value取值privateString from ="********@qq.com";// 发送人    privateStringto="********@126.com";// 接收人   privateString subject ="测试邮件";// 邮件主题   privateString text ="测试邮件正文";// 邮件内容@OverridepublicvoidsendMail(){SimpleMailMessage mailMessage =newSimpleMailMessage();//mailMessage.setFrom(from); //from后面加个名字,比如xxx公司,不然发送发一串邮箱数字,谁知道你是谁      
        mailMessage.setFrom(from +"别名");//这里的to是个可变长String,即可发送多人
        mailMessage.setTo(to);        
        mailMessage.setSubject(subject);        
        mailMessage.setText(text);//mailMessage.setSendDate();        //设置发送的时间//其他设置自行set
        javaMailSender.send(mailMessage);//发送}}

写个测试类看下效果:

在这里插入图片描述
联不通:

在这里插入图片描述

我在公司内网写的,网络不通,不是25端口被禁的原因,在外网是可以ping通smtp.qq.com这个host的。先跳过了。

3、发送复杂邮件

正文为html,比如超链接或者图片。以及发送附件:

//超链接privateString text ="<a href='https://www.baidu.com/'>百度</a>";//图片privateString img ="<img src='https://pic35.photophoto.cn/20150511/0034034892281415_b.jpg' />";@OverridepublicvoidsendMail(){try{MimeMessage mimeMessage = javaMailSender.createMimeMessage();//第二个参数,即是否允许添加多部件//我后面要添加各种附件,所以这里必须是true       MimeMessageHelper mimeMessageHelper =newMimeMessageHelper(mimeMessage,true);       
        mimeMessageHelper.setFrom(from);       
        mimeMessageHelper.setTo(to);        
        mimeMessageHelper.setSubject(subject);//不加true,默认当普通文本,true即按html来解析        
        mimeMessageHelper.setText(text,true);//添加附件File file1 =newFile("logo.png");File file2 =newFile("D:\\myboot.jar");//如果是手写文件名,记得添加个后缀,比如.png,方便在邮件里可预览 
        mimeMessageHelper.addAttachment(file1.getName(),file1);  
        mimeMessageHelper.addAttachment("一个jar包.jar",file2);    
        javaMailSender.send(mimeMessage);}catch(Exception e){       
        e.printStackTrace();}}

注意点:

  • 不再用简单消息对象,而是MimeMessage对象,并把它包装成mimeMessageHelper对象
  • 要传附件的话,mimeMessageHelper对象构造方法的第二个参数传true
  • setText方法重载,第二个参数传true,就是讲text按照html来解析,而不是普通文本
  • 注意最后send的还是MimeMessage对象,不是mimeMessageHelper对象
标签: spring boot java 后端

本文转载自: https://blog.csdn.net/llg___/article/details/133593862
版权归原作者 -代号9527 所有, 如有侵权,请联系我们删除。

“【开发篇】十六、SpringBoot整合JavaMail实现发邮件”的评论:

还没有评论