最近在写网页后端,注册时需要通过发送邮箱验证码进行验证,主要采用Java mail发送邮件,在调试过程中经常无法连接到smtp.qq.com 587,原因可能和防火墙有关(挂着梯子是这样的orz),遂记录此篇。
在 Windows 系统上,允许 SMTP 使用的端口通过防火墙的操作方法如下:
1. 打开 Windows 防火墙设置
-
按
Win + R
键打开 运行 对话框,输入wf.msc
并按回车键,打开 Windows 防火墙 配置界面。 -
你也可以通过控制面板来访问防火墙设置:
- 打开 控制面板 → 系统和安全 → Windows 防火墙。
- 在左侧面板中,点击 高级设置,进入 高级安全 Windows 防火墙 界面。
2. 创建入站规则
创建一个新的入站规则,允许指定端口通过防火墙。
- 在 高级安全 Windows 防火墙 界面中,点击左侧的 入站规则。
- 在右侧的操作面板中,点击 新建规则。
3. 配置端口
- 在弹出的 新建入站规则向导 中,选择 端口,然后点击 下一步。
- 选择 TCP,并在 特定本地端口 中输入以下端口号(SMTP 可能使用以下端口之一):
- 25 (非加密连接)
- 465 (SSL 加密连接)
- 587 (TLS 加密连接)
- 点击 下一步。
4. 允许连接
- 选择 允许连接,然后点击 下一步。
5. 应用规则
- 在 配置文件 页面上,保持默认选项即可(选择 域、私人 和 公共 都是默认选项)。
- 点击 下一步。
6. 命名规则
- 给这个新规则命名,例如:“SMTP 端口允许”,然后点击 完成。
7. 检查规则是否生效
- 创建完规则后,可以在 入站规则 列表中查看它是否出现在已启用的规则列表中。
- 如果需要,也可以右键点击该规则,选择 启用 或 禁用。
8. 测试端口是否开放
你可以通过以下方式测试端口是否开放:
- 使用
telnet
工具检查能否成功连接到 SMTP 服务器。- 打开命令提示符,输入以下命令测试 SMTP 端口是否可达:
telnet smtp.qq.com 587
- 如果连接成功,会显示类似下面的响应:
Trying 123.123.123.123... Connected to smtp.qq.com. Escape character is '^]'. 220 smtp.qq.com ESMTP Exim 4.94.2 Wed, 14 Nov 2024 10:30:00 +0800
- 如果连接失败,通常会显示 连接超时 或 连接被拒绝。
- 打开命令提示符,输入以下命令测试 SMTP 端口是否可达: