前情提要
以目前 IT 系统功能来看, 邮件功能是非常重要的一个功能. 例如: 找回密码, 邮箱验证, 邮件动态码, 忘记密码, 邮件营销等, 都需要用到邮件功能. 结合当下最流行的 spring boot 微服务, 推出了 spring-boot-starter-mail 邮件支持包.
功能使用
引入 maven 包
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-mail</artifactId>
- </dependency>
相关参数配置(以 QQ 邮箱为例)
- private static JavaMailSenderImpl javaMailSender;
- static {
- javaMailSender = new JavaMailSenderImpl();
- javaMailSender.setHost("smtp.qq.com");// 链接服务器
- //javaMailSender.setPort(25);// 默认使用 25 端口发送
- javaMailSender.setUsername("QQ 邮箱");// 账号
- javaMailSender.setPassword("授权码");// 授权码
- javaMailSender.setDefaultEncoding("UTF-8");
- Properties properties = new Properties();
- //properties.setProperty("mail.debug", "true");// 启用调试
- //properties.setProperty("mail.smtp.timeout", "1000");// 设置链接超时
- // 设置通过 ssl 协议使用 465 端口发送, 使用默认端口 (25) 时下面三行不需要
- properties.setProperty("mail.smtp.auth", "true");// 开启认证
- properties.setProperty("mail.smtp.socketFactory.port", "465");// 设置 ssl 端口
- properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
- javaMailSender.setJavaMailProperties(properties);
- }
邮件发送代码(此方法支持文本和 html 邮件)
- @ResponseBody
- @RequestMapping("/mailSend")
- public void mailSend(){
- log.info("--------------[mail/mailSend] start------------------");
- try {
- MimeMessage message=javaMailSender.createMimeMessage();
- MimeMessageHelper helper=new MimeMessageHelper(message,true);
- helper.setFrom("[email protected]","272286717");
- helper.setTo("[email protected]");
- helper.setSubject("测试邮件");
- helper.setText("测试邮件内容",true);
- javaMailSender.send(message);
- } catch (Exception e) {
- log.error("邮件发送失败", e.getMessage());
- e.printStackTrace();
- }
- log.info("--------------[mail/mailSend] end------------------");
- }
测试
测试地址
http://localhost:6677/API/mail/mailSend
日志输出
登录 163 邮箱查看是否收到邮件
总结
spring boot 对 mail 的封装支持非常好, 使用方便, 简单几行代码就可以把邮件集成进来
QQ 邮箱和 163 邮箱, 使用的授权码, 而不是登录密码, 如果是邮箱登录密码, 邮件是发不出去的
来源: http://www.bubuko.com/infodetail-3365265.html