我们在日常开发中,需要实现一个对邮箱的发送,今天就实现邮箱的发送工具类,只需要一些注册邮箱之后的配置即可,我这边使用的是qq邮箱
0.加上依赖
<!--邮箱--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>
1.配置yml文件(需要到官网上去注册,不知道怎么获取的可以看视频或者问chatGPT:https://mail.qq.com/QQ邮箱,为亿万用户提供高效稳定便捷的电子邮件服务。你可以在电脑网页、iOS/iPad客户端、及Android客户端上使用它,通过邮件发送3G的超大附件,体验文件中转站、日历、记事本、漂流瓶等特色功能。QQ邮箱,常联系。https://mail.qq.com/)
spring: # Spring Boot应用程序配置的根节点mail: # 邮件相关配置username: # 你自己的QQ邮箱的用户名,需要填写你的QQ邮箱地址password: # 你自己的QQ邮箱的密钥/密码,需要填写你的QQ邮箱登录密码host: smtp.qq.com # SMTP服务器主机名,这里设置为QQ邮箱的SMTP服务器port: 465 # SMTP服务器端口,通常情况下使用SSL的SMTP协议使用465端口protocol: smtp # 使用SMTP协议发送邮件properties: # 邮件相关的属性配置mail: # 邮件协议属性配置smtp: # SMTP协议属性配置ssl: # SSL/TLS属性配置enable: true # 启用SSL,表示使用加密传输邮件auth: true # 启用SMTP身份验证,需要提供用户名和密码starttls: # STARTTLS属性配置,用于在未加密连接上启用TLSenable: true # 启用STARTTLSrequired: true # 要求必须使用STARTTLSsocketFactory: # Socket工厂属性配置,用于SSL连接port: 465 # SSL连接的端口,与SMTP服务器的端口一致class: javax.net.ssl.SSLSocketFactory # 使用的Socket工厂类,通常用于SSL连接# 请确保填写你自己的QQ邮箱地址和密码,以及确保QQ邮箱允许使用SMTP服务来发送邮件
2.写一个发送邮箱工具类
@Component
public class MailUtil {private static MailUtil INSTANCE = new MailUtil();@ResourceJavaMailSender mailSender;@ResourceJavaMailSender javaMailSender;@PostConstructpublic void init(){INSTANCE.mailSender = mailSender;}/*** 发送简单邮件** @param subject 主题* @param content 内容* @param from 发件人* @param to 收件人*/public void sendSimpleMail(String subject,String content,String from,String[] to){SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from);message.setTo(to);// 主题message.setSubject(subject);// 邮件正文message.setText(content);message.setSentDate(new Date());// 发送邮件INSTANCE.mailSender.send(message);}public void sendMimeMail(String subject,String content,String from,String[] to) throws MessagingException {MimeMessage mimeMessage = javaMailSender.createMimeMessage();// 构建一个邮件对象MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);// 设置邮件主题helper.setSubject(subject);// 设置邮件发送者,这个跟application.yml中设置的要一致helper.setFrom(from);helper.setTo(to);// 设置邮件发送日期helper.setSentDate(new Date());// 设置邮件的正文 true:是html文件helper.setText(content,true);// 发送邮件javaMailSender.send(mimeMessage);}}
3.编写controller控制器接口
@RestController
@Api(tags = "邮箱发送")
@RequestMapping("/mail")
public class MailServlet {@Resourceprivate MailUtil mailUtil;@PostMapping("/to")@ApiOperation("发送邮件")@ApiImplicitParams({@ApiImplicitParam(name = "subject", value = "邮件主题"), @ApiImplicitParam(name = "content", value = "邮件内容"), @ApiImplicitParam(name = "from", value = "发送邮件的QQ邮箱"), @ApiImplicitParam(name = "to", value = "要发送到的QQ邮箱,用,隔开")})public R to(String subject, String content, String from, String to) {String[] split = to.split(",");try {mailUtil.sendSimpleMail(subject, content, from, split);return R.ok("发送成功");} catch (Exception e) {e.fillInStackTrace();return R.fail("发送失败");}}@PostMapping("/tof")@ApiOperation("发送富文本邮件")@ApiImplicitParams({@ApiImplicitParam(name = "subject", value = "邮件主题"), @ApiImplicitParam(name = "content", value = "邮件内容<html>格式"), @ApiImplicitParam(name = "from", value = "发送邮件的QQ邮箱"), @ApiImplicitParam(name = "to", value = "要发送到的QQ邮箱,用,隔开")})public R tof(String subject, String content, String from, String to) {String[] split = to.split(",");try {mailUtil.sendMimeMail(subject, content, from, split);return R.ok("发送成功");} catch (Exception e) {e.fillInStackTrace();return R.fail("发送失败");}}
}
最后就可以发送邮箱了,今天的分享就到这里了