springcloud整合email真的是搞得我脑壳痛,因为我需要注册的时候通过rabbitmq给用户发一封邮件,因为这个报错的原因导致我mq一直监听失败然后就开始了循环发消息,这就导致邮箱一直在不停的发。

话不多说直接给解决方案。

需要的依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--email配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

email服务邮箱的yml

其中 protocol: smtp的配置查了好多博客,一些说使用465需要smtps,经过我的测试好像都可以没什么区别

spring:
# 邮箱配置
mail:
# 配置 SMTP 服务器地址
host: smtp.qq.com
# 发送者邮箱
username: xxxxxxx@qq.com
# 配置密码,注意这不是真正的密码,而是刚刚申请到的16位授权码
password: nxarhendrqmlbddd
# 端口号465或587
port: 465
# 默认的邮件编码为UTF-8
default-encoding: UTF-8
#这里完全可以直接用smtp
protocol: smtp
test-connection: false
properties:
mail:
debug: true
smtp:
ssl:
enable: true
auth: true
socketFactory:
#这个可要可不要
# class: javax.net.ssl.SSLSocketFactory
port: 465
starttls:
enable: true
required: true

邮件发送

import com.cn.me.result.CommonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import java.util.Date; /**
* @author Dshzs月
* @version 1.0.0
* @ClassName SendEmailController.java
* @Description TODO
* @createTime 2022年03月24日 10:36:00
*/
@RestController
public class SendEmailController {
@Autowired
private JavaMailSender javaMailSender; @Value("${spring.mail.username}")
private String name; // 上传文件存储目录
@RequestMapping("/email")
public void email(@RequestParam("email") String email,@RequestParam("title") String title,@RequestParam("content") String content) {
// 构建一个邮件对象
SimpleMailMessage message = new SimpleMailMessage();
// 设置邮件主题
message.setSubject(title);
// 设置邮件发送者,这个跟application.yml中设置的要一致
message.setFrom(name);
// 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似
// message.setTo("10*****16@qq.com","12****32*qq.com");
message.setTo(email);
// 设置邮件抄送人,可以有多个抄送人
//message.setCc("12****32*qq.com");
// 设置隐秘抄送人,可以有多个
//message.setBcc("7******9@qq.com");
// 设置邮件发送日期
message.setSentDate(new Date());
// 设置邮件的正文
message.setText(content);
// 发送邮件
javaMailSender.send(message);
}
}

应为我是通过feign调用那么也贴一些feign

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; /**
* @author Dshzs月
* @version 1.0.0
* @ClassName SendEmailFeignClient.java
* @Description TODO
* @createTime 2022年03月25日 14:26:00
*/
@FeignClient(value = "email-server")
public interface SendEmailFeignClient {
@RequestMapping(value = "email", consumes = "application/json")
void email(@RequestParam("visitoremail") String email, @RequestParam("title") String title, @RequestParam("content") String content); }

消费端调用

import com.cn.me.feign.SendEmailFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; /**
* @author Dshzs月
* @version 1.0.0
* @ClassName Tool.java
* @Description TODO
* @createTime 2022年03月25日 14:25:00
*/
@Component
public class Tool {
@Autowired
private SendEmailFeignClient sendEmailFeignClient; /**
* 发送邮件的方法
*
* @param email
*/
public void sendEmails(String username, String email) {
//定义标题
String title = "欢迎加入我们!";
//定义内容
String content = "您好,您在婚纱殿的账户激活成功,您的登录用户名是: " +username+
",谢谢您的青睐 0^0!";
//通过sendEmailController调用email方法
sendEmailFeignClient.email(email, title, content);
}

mq就不贴了。

总结:导致(Unrecognized SSL message, plaintext connection?)的元凶就是ssl需要开启,协议http和https是不同的,然后端口不能用587

最新文章

  1. 妙味课堂——HTML+CSS基础笔记
  2. 利用OpenShift托管Node.js Web服务进行微信公众号开发
  3. PHP 常用函数库和一些实用小技巧
  4. JavaScript:下拉列表框的事件处理
  5. ANGULARJS 动态编译添加到dom中
  6. html实体字符
  7. 在Web中实现C/S模式的Tab
  8. webservice soapclient报错Error fetching http headers
  9. 找回windows 8 中隐藏的Aero Lite主题
  10. jQuery(一)delegate() 方法
  11. remove all .git files and directories use one command
  12. Cache的Add之委托解说
  13. 滑动条 Trackbar[OpenCV 笔记9]
  14. div添加透明边框透明背景css
  15. hbase importtsv
  16. static函数和普通函数的区别
  17. 【Hibernate步步为营】--(一对多映射)之双向关联
  18. 48、tensorflow入门二,线性模型的拟合
  19. iOS开发之UIWindow
  20. hadoop的安装和配置(一)本地模式

热门文章

  1. 在统信UOS上将桌面窗口输出到Windows机器上的Xming
  2. 万字详解,吃透 MongoDB!
  3. Unity打包资源,进行后台加载
  4. 【学习笔记】XR872 GUI Littlevgl 8.0 移植(文件系统)
  5. OpenStack命令行参考
  6. 前端知识点(js部分)
  7. redis 6种过期策略的具体方式
  8. 解决:ChatGPT too many requests in 1 hour.Try again later 怎么办?OpenAI 提示
  9. java基础(数组、面向抽象编程、static、异常)
  10. metasploit2-practice