阿里云/腾讯云默认禁止使用25端口发送邮件解决方法

  出于安全考虑,阿里云腾讯云等服务器默认封禁TCP25端口出方向的访问流量,所以用户无法在阿里云或腾讯云上的云服务器通过TCP25端口连接外部地址。用户无法通过TCP25端口连接第三方邮件服务商的SMTP服务器对外部发送邮件。这种情况下我们通常可以使用一下两种方案来解决。

一、申请解封25端口

阿里云以及腾讯云解封教程可参考以下链接

阿里云阿里云服务器25端口解封教程

腾讯云:腾讯云解封25端口教程

(经实测腾讯云解封很方便,阿里云可能会申请不通过)

腾讯云

阿里云 

二、改用465端口

在使用465端口的SSL安全链接方案后,千万不要使用【网易品牌】的免费邮箱(如:163,126,yeah.net等。不过听说网易收费邮箱能正常收发邮件),否则你发送的邮件会当作是垃圾邮件禁止发送。

网易邮件发送问题链接企业退信的常见问题?-163邮箱常见问题

我们这里使用的是新浪邮箱进行465端口测试。使用之前需要在邮箱设置中开发客户端授权码

示例代码:

我这里使用的hutool邮件工具类进行邮件发送。官网链接:Hutool参考文档

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.0.M4</version>
        </dependency>
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>

mail.setting (465端口)

# 邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>
host = smtp.sina.com
# 邮件服务器的SMTP端口,默认是25端口
port = 465
# 发件人(必须正确,否则发送失败)
from = XXX@sina.com
# 用户名,必须要设置成你自己使用邮箱的名称,否则会报错,权限认证失败  535错误
user = XXX@sina.com
# 密码 此处注意,这里是授权码
pass = xxxxxx(对应的邮箱客户端授权码)
# 使用SSL安全连接
sslEnable = true
# 指定实现javax.net.SocketFactory接口的类的名称,这个类将被用于创建SMTP的套接字
socketFactoryClass = javax.net.ssl.SSLSocketFactory
# 如果设置为true,未能创建一个套接字使用指定的套接字工厂类将导致使用java.net.Socket创建的套接字类, 默认值为true
socketFactoryFallback = false
# 指定的端口连接到在使用指定的套接字工厂。如果没有设置,将使用默认端口456
socketFactoryPort = 465
auth = true

mail.setting(25端口)

host = smtp.yeah.net
# 邮件服务器的SMTP端口,可选,默认25
port = 25
# 发件人(必须正确,否则发送失败)
from = XXXXX@yeah.net
# 用户名,默认为发件人邮箱前缀
user = XXXXXX
# 密码(注意,某些邮箱需要为SMTP服务单独设置授权码,详情查看相关帮助)
pass = XXXXX

使用hutool工具类发送邮件非常简单,调用如下api

 MailUtil.send("邮件地址", "邮件主题", "邮件内容", 是否是html);

测试

 

posted @ 2022-05-30 14:31  少说点话  阅读(2667)  评论(0编辑  收藏  举报
网站运行: