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

实现邮件发送

实现发送邮件的功能,可以在判定用户异地登录后发送邮件提醒或者使用邮件发送验证码的多种使用场景。

引入邮件依赖

<!--邮件发送依赖包-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--freemarker制作Html邮件模板依赖包-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

主要是引入了spring-boot-starter-mail和spring-boot-starter-freemarker的相关jar包。

其中,spring-boot-starter-mail是为了提供发生邮件的功能。

spring-boot-starter-freemarker是为了提供处理模板文件的功能。

配置邮箱参数

需要在application.yml文件中配置邮箱发送的相关参数(以QQ为例)

QQ邮箱授权码获取:https://service.mail.qq.com/detail/0/75

spring:mail:protocol: smtphost: smtp.qq.comport: 465username: xxxx@qq.com #你的邮箱password: xxxxxxxx  #你的授权码properties:mail:smtp:auth: truessl:enable: truesocketFactory:class: com.mysql.cj.jdbc.Socks5SocketFactoryfallback: true

增加发邮件类

创建IEmailService接口,为了对发邮件的功能指定一个规范,后面系统如果对接了其他的发邮件功能,也可以使用这套规范。

package com.kailong.service.email;import javax.mail.MessagingException;
import java.util.List;public interface IEmailService {/*** 发送简单文本邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param content      内容*/void sendEmail(String receiveEmail, String subject, String content);/*** 发送HTML格式的邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param htmlContent  内容* @throws MessagingException*/void sendHtmlEmail(String receiveEmail, String subject, String htmlContent) throws MessagingException;/*** 发送包含附件的邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param emailContent 内容* @param filePathList 附件地址* @throws MessagingException 异常*/void sendAttachmentsEmail(String receiveEmail, String subject, String emailContent, List<String> filePathList) throws MessagingException;
}

这个接口中定义了三个方法:

  1. 发生简单邮件。
  2. 发生html格式邮件。
  3. 发生带附件的邮件。

实现接口:

@Service
public class EmailServiceImpl implements IEmailService {@Autowiredprivate JavaMailSender javaMailSender;@Value("${spring.mail.username}")private String fromEmail;/*** 发送简单文本邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param content      内容*/@Overridepublic void sendEmail(String receiveEmail, String subject, String content) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(fromEmail);message.setTo(receiveEmail);message.setSubject(subject);message.setText(content);javaMailSender.send(message);}/*** 发送HTML格式的邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param htmlContent  内容* @throws MessagingException*/@Overridepublic void sendHtmlEmail(String receiveEmail, String subject, String htmlContent) throws MessagingException {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(fromEmail);helper.setTo(receiveEmail);helper.setSubject(subject);helper.setText(htmlContent, true);javaMailSender.send(message);}/*** 发送包含附件的邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param emailContent 内容* @param filePathList 附件地址* @throws MessagingException 异常*/@Overridepublic void sendAttachmentsEmail(String receiveEmail, String subject, String emailContent, List<String> filePathList) throws MessagingException {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(fromEmail);helper.setTo(receiveEmail);helper.setSubject(subject);helper.setText(emailContent, true);//添加附件资源for (String item : filePathList) {FileSystemResource file = new FileSystemResource(new File(item));String fileName = item.substring(item.lastIndexOf(File.separator));helper.addAttachment(fileName, file);}//发送邮件javaMailSender.send(message);}
}

创建测试接口:

@RestController
@RequestMapping("/job")
public class TestController {private static final String SUCCESS = "success";@Autowiredprivate EmailServiceImpl emailService;@GetMapping("/test")public String test() {return SUCCESS;}@GetMapping("/sendEmail")public String sendEmail() {emailService.sendEmail("12lisu@163.com", "test", "test123");return SUCCESS;}
}

效果测试:

  • 获取用户ip所在城市
  • 记录用户业务请求日志
http://www.sczhlp.com/news/148014/

相关文章:

  • AGC073C 赛后补题记录
  • python做项目的网站网站编辑招聘信息
  • LuatOS赋能Air780EPM:FTP通信开发教程正式上线!
  • DM40万用表为何全网爆火?!它有哪些与众不同?DM40万用表比肩千元级表,让您轻松实现专业级测量自由!
  • 爱心助学网站建设支付宝可以给第三方网站做担保么
  • 建设一个网站需要的空间有哪些方法实时排名软件
  • 定制网站和模板网站的区别中国招标投标网
  • 深圳建站公司优化深圳外企公司排名
  • 若比邻跨境电商网站制作影视宣传片
  • 做网站投入frontpage2007网站建设
  • 给家乡做网站新闻最近的大事10件
  • 临汾做网站桐城网站开发
  • 南京行业网站建设以下哪些软件不是网页制作软件
  • 网站定制怎么选择什么是电商包括哪些
  • 外贸网站建站方案买个小程序多少钱
  • 著名网站有哪些精品网站建设费用 在线磐石网络
  • leetCode刷题记录1
  • 宁波网站推广优化公司怎么样长沙网站大全
  • 西安市住房和城乡建设局门户网站西宁企业网站建设公司
  • 制作网站备案幕布扶贫办门户网站建设管理办法
  • 站长统计app中企动力服务怎么样
  • 上上海网站设计建设软文推广代理平台
  • 无为县住房和城乡建设局网站青岛做网站建设价格
  • dede手机网站仿站建设多用户网站
  • k8s下部署kuboard
  • 网站专题怎么做外国人做汉字网站
  • 企业网站推广成功案例wordpress 国际化 mo
  • 学敏网站建设wordpress 排名
  • 手机app与手机网站的区别浙江网站seo
  • 网站推广优化方案官方做任务网站