问题描述:
在本地启动项目并发送邮箱完全木有问题,ok,上云,注册用户,一顿操作猛如虎,what?,邮箱验证码发送失败??,什么玩意??
原因:
发邮件的默认端口是25端口,而阿里云禁止通过STMP 25端口发送邮件,所以发送失败!!!!
解决方案:
(1)向阿里云申请开放25端口(需要审核)
登录到阿里云管理控制台;
鼠标移动到头像,可以看到下拉菜单,点击“安全管控”
左侧栏“业务申请”–“25端口解封”
注意:在正式申请前,您需要确认同意并承诺,保证TCP 25端口仅用来连接第三方的SMTP服务器,从第三方的SMTP服务器外发邮件。如发现您使用申请的IP直接通过SMTP发送邮件,阿里云有权永久性封禁TCP 25端口,并不再提供解封服务。
选择IP类型(经典或VPC),IP及关联域名,
勾选已阅读并同意《25端口使用服务协议》,单击下一步。
填写申请表单,详细说明您的TCP 25端口使用描述及使用情况
单击确定,提交TCP 25端口解封申请
(2)采用SSL协议发送邮件,并端口号改成465,自行配置(需要开启smtp)
修改application.yml配置
spring
mail:
#邮箱服务地址
host: smtp.qq.com
#用户名
username: (你自己的username)
#发送邮件密码
password: (SMTP 密码,不是登录密码)
default-encoding: UTF-8
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
socketFactory:
class: javax.net.ssl.SSLSocketFactory
port: 465
#自定义属性以谁来发邮件
mail:
fromMail:
addr: yc488@qq.com
@Value("${mail.fromMail.addr}") //获取application中配置的addr
private String from;
/**
*发送邮件验证码
*/
private boolean sendEmail(String to, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject("YCBLOG系统邮件");
message.setText(content);
message.setSentDate(new Date());
try {
mailSender.send(message);
return true;
} catch (MailException e) {
e.printStackTrace();
return false;
}
}
配置完毕后,阿里云服务器安全组开启465端口
(3)重新上云,发送邮件成功!!!!