首先给出一个最基础版本 ,老版本都是使用25端口进行邮件发送,下面是application.yml里面的配置内容;
spring:
mail:
host: "smtp.163.com"
username: 'xxx@163.com'
password: 'xxx'
port: 25
default-encoding: UTF-8
注意:
-
你如果使用的是qq邮箱作为邮件发送方,则host:smtp.qq.com,这个smtp的电子邮件协议,整个host代表发送方使用的邮箱类型
-
username 则是填写你的真实邮箱地址喽,xxx都懂?
-
password:不是你的邮箱密码 ,而是你的POP3授权码,打开163邮箱点击设置,打开你的SMTO IMAP服务 ,然后会给你一个授权码。
-
port: 就是使用端口
-
default-encoding: 就是编码格式
然后给你们基础版的java 接口,记住别不起服务调试或者跟我一样用main函数调用,那样的话 你的配置文件鬼给你加载???
另外注意setFrom 这个是你邮箱的用户名,不能乱填的
@RestController
@RequestMapping(value = "/email")
public class EmailSendController {
@Autowired
private JavaMailSender mailSender;
@PostMapping(value = "/sub")
public String sendSimpleMsg(String msg, String email) {
if (StringUtils.isEmpty(msg) || StringUtils.isEmpty(email)) {
return "请输入要发送消息和目标邮箱";
}
try {
SimpleMailMessage mail = new SimpleMailMessage();
mail.setFrom("xxx");
mail.setTo(email);
mail.setSubject("这是一封简单邮件");
mail.setText(msg);
mailSender.send(mail);
return "发送成功";
} catch (Exception ex) {
ex.printStackTrace();
return "发送失败:" + ex.getMessage();
}
}
}
好了,基础版本过去,就要解释一下,如果你的服务准备部署到阿里云服务器上,那么你的25端口就成功被封杀了,你需要改用465端口.
- 25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件,如今绝大多数邮件服务器都使用该协议。当你给别人发送邮件时,你的机器的某个动态端口(大于1024)就会与邮件服务器的25号端口建立一个连接,你发送的邮件就会通过这个连接传送到邮件服务器上,保存起来
- 465端口是SSL/TLS通讯协议的 内容一开始就被保护起来了,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性。
因此如果要使用465端口就要调整配置了,下面是application.yml
spring:
mail:
host: "smtp.163.com"
username: 'xxx@163.com'
password: 'xxx'
port: 465
default-encoding: UTF-8
properties:
mail:
smtp:
starttls:
enable: true
required: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory
这个465端口版本,主要添加了properties ,里面的内容如果需要知道就自己百度吧,嘎嘎