赞
踩
springboot整合邮件系统,发邮件是java程序的基本操作,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>
步骤②:配置邮箱的登录信息
spring:
mail:
host: smtp.126.com
username: test@126.com
password: test
java程序仅用于发送邮件,邮件的功能还是邮件供应商提供的,所以这里是用别人的邮件服务,要配置对应信息。
host配置的是提供邮件服务的主机协议,当前程序仅用于发送邮件,因此配置的是smtp的协议。
password并不是邮箱账号的登录密码,是邮件供应商提供的一个加密后的密码,也是为了保障系统安全性。不然外部人员通过地址访问下载了配置文件,直接获取到了邮件密码就会有极大的安全隐患。可以到邮件供应商的设置页面找POP3或IMAP这些关键词找到对应的获取位置。下例仅供参考:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wvbMhWNS-1665410110674)(img\image-20220228111251036.png)]
步骤③:使用JavaMailSender接口发送邮件
@Service public class SendMailServiceImpl implements SendMailService { @Autowired private JavaMailSender javaMailSender; //发送人 private String from = "test@qq.com"; //接收人 private String to = "test@126.com"; //标题 private String subject = "测试邮件"; //正文 private String context = "测试邮件正文内容"; @Override public 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 { @Autowired private 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 { @Autowired private 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("最靠谱的培训结构.png",f2); javaMailSender.send(message); } catch (Exception e) { e.printStackTrace(); } } }
总结
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。