当前位置: 首页 > news >正文

springboot整合第三方技术邮件系统

springboot整合第三方技术邮件系统,发邮件是java程序的基本操作,springboot整合javamail其实就是简化开发。不熟悉邮件的小伙伴可以先学习完javamail的基础操作,再来看这一部分内容才能感触到springboot整合javamail究竟简化了哪些操作。简化的多码?其实不多,差别不大,只是还个格式而已。

​ 学习邮件发送之前先了解3个概念,这些概念规范了邮件操作过程中的标准。

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

​ 简单说就是SMPT是发邮件的标准,POP3是收邮件的标准,IMAP是对POP3的升级。我们制作程序中操作邮件,通常是发邮件,所以SMTP是使用的重点,收邮件大部分都是通过邮件客户端完成,所以开发收邮件的代码极少。除非你要读取邮件内容,然后解析,做邮件功能的统一处理。例如HR的邮箱收到求职者的简历,可以读取后统一处理。但是为什么不制作独立的投递简历的系统呢?所以说,好奇怪的需求,因为要想收邮件就要规范发邮件的人的书写格式,这个未免有点强人所难,并且极易收到外部攻击,你不可能使用白名单来收邮件。如果能使用白名单来收邮件然后解析邮件,还不如开发个系统给白名单中的人专用呢,更安全,总之就是鸡肋了。下面就开始学习springboot如何整合javamail发送邮件。

发送简单邮件

步骤①:导入springboot整合javamail的starter

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

步骤②:配置邮箱的登录信息

host:供应商,QQ就写:smtp.qq.com

spring:mail:host: smtp.126.comusername: test@126.compassword: test

java程序仅用于发送邮件,邮件的功能还是邮件供应商提供的,所以这里是用别人的邮件服务,要配置对应信息。

​ host配置的是提供邮件服务的主机协议,当前程序仅用于发送邮件,因此配置的是smtp的协议。

​ password并不是邮箱账号的登录密码,是邮件供应商提供的一个加密后的密码,也是为了保障系统安全性。不然外部人员通过地址访问下载了配置文件,直接获取到了邮件密码就会有极大的安全隐患。有关该密码的获取每个邮件供应商提供的方式都不一样,此处略过。可以到邮件供应商的设置页面找POP3或IMAP这些关键词找到对应的获取位置。下例仅供参考:
在这里插入图片描述
步骤③:使用JavaMailSender接口发送邮件

@Service
public class SendMailServiceImpl implements SendMailService {@Autowiredprivate JavaMailSender javaMailSender;//发送人private String from = "test@qq.com";//接收人private String to = "test@126.com";//标题private String subject = "测试邮件";//正文private String context = "测试邮件正文内容";@Overridepublic void sendMail() {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from+"(小甜甜)");message.setTo(to);message.setSubject(subject);message.setText(context);javaMailSender.send(message);}
}

​ 将发送邮件的必要信息(发件人、收件人、标题、正文)封装到SimpleMailMessage对象中,可以根据规则设置发送人昵称等。

发送多组件邮件(附件、复杂正文)

​ 发送简单邮件仅需要提供对应的4个基本信息就可以了,如果想发送复杂的邮件,需要更换邮件对象。使用MimeMessage可以发送特殊的邮件。

发送网页正文邮件

@Service
public class SendMailServiceImpl2 implements SendMailService {@Autowiredprivate JavaMailSender javaMailSender;//发送人private String from = "test@qq.com";//接收人private String to = "test@126.com";//标题private String subject = "测试邮件";//正文private String context = "<img src='ABC.JPG'/><a href='https://www.itcast.cn'>点开有惊喜</a>";public void sendMail() {try {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message);helper.setFrom(to+"(小甜甜)");helper.setTo(from);helper.setSubject(subject);helper.setText(context,true);		//此处设置正文支持html解析javaMailSender.send(message);} catch (Exception e) {e.printStackTrace();}}
}

发送带有附件的邮件

@Service
public class SendMailServiceImpl2 implements SendMailService {@Autowiredprivate JavaMailSender javaMailSender;//发送人private String from = "test@qq.com";//接收人private String to = "test@126.com";//标题private String subject = "测试邮件";//正文private String context = "测试邮件正文";public void sendMail() {try {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message,true);		//此处设置支持附件helper.setFrom(to+"(小甜甜)");helper.setTo(from);helper.setSubject(subject);helper.setText(context);//添加附件File f1 = new File("springboot_23_mail-0.0.1-SNAPSHOT.jar");File f2 = new File("resources\\logo.png");helper.addAttachment(f1.getName(),f1);helper.addAttachment("哆啦A梦.png",f2);javaMailSender.send(message);} catch (Exception e) {e.printStackTrace();}}
}

总结

springboot整合javamail其实就是简化了发送邮件的客户端对象JavaMailSender的初始化过程,通过配置的形式加载信息简化开发过程

http://www.lryc.cn/news/149365.html

相关文章:

  • Python入门学习——Day2-变量和数据类型
  • Graylog 更改显示的时区(Display timezone)
  • 【网络安全防护】上海道宁与Bitdefender帮助您构建弹性网络并降低安全运营成本
  • 文心一言 VS CHATGPT
  • 2023-09-01力扣每日一题
  • 【Python】从入门到上头— IO编程(8)
  • R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享...
  • LeetCode 刷题第四轮 Offer I + 类型题
  • LabVIEW计算测量路径输出端随机变量的概率分布密度
  • [C++ 网络协议] 多进程服务器端
  • 李宏毅 2022机器学习 HW2 strong baseline 上分路线
  • 伦敦银交易时间怎么选择?
  • 解决FreeRTOS程序跑不起来,打印调试却提示“Error:..\FreeRTOS\port\RVDS\ARM_CM3\port.c,244“的方法
  • Python序列类型
  • 【python爬虫】5.爬虫实操(歌词爬取)
  • 浅探Android 逆向前景趋势~
  • 国际音标学习笔记
  • Azure - AzCopy学习
  • 解决无法远程连接MySQL服务的问题
  • mybatiplus代码生成器
  • leetcode分类刷题:哈希表(Hash Table)(三、循环存在问题)
  • 43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面
  • 干货分享,现代列式数据库系统如何设计与实现? | StoneData 论文选读
  • 说说构建流批一体准实时数仓
  • 北京筑龙受邀出席中物联“采购供应链中国行—走进雄安”活动
  • 【Tkinter界面:练习-01】窗口-部件-布局
  • LeetCode每日一题:823. 带因子的二叉树(2023.8.29 C++)
  • 【教学类-35-01】学号+姓名+班级(描字帖)A4一页
  • UE5 里的一些常用的了解
  • 【网络安全带你练爬虫-100练】第19练:使用python打开exe文件