使用 swaks 快速测试 Lark(飞书国际版)SMTP 发信能力
适用场景:
- 验证企业是否正确开通了 Lark Mail 的 SMTP 发送权限
- 测试应用专用密码 / 公共邮箱密码是否有效
- 调试第三方系统(如 Discourse、Jira、GitLab、监控告警系统等)与 Lark SMTP 的集成
- 对比 587 与 465 端口的连接表现
当前推荐配置(2026年最新)
- SMTP 服务器:
smtp.larksuite.com
- 首选端口:587(STARTTLS,必须使用)
- 备选端口:465(直接 TLS / SMTPS,部分场景仍支持)
- 端口 25:基本不支持外发
- 认证方式:LOGIN(PLAIN 通常也支持,但推荐显式用 LOGIN)
- 密码:必须使用 Lark 后台生成的「应用专用密码」或公共邮箱专用密码,普通邮箱密码大概率会失败
一、准备工作
确保已开通 Lark Mail 服务并完成域名验证(管理员在 Lark 管理后台 > 产品设置 > 邮箱 > 服务管理 完成)。
准备发件邮箱(个人或公共邮箱均可)。
生成应用专用密码:
- 进入 Lark 网页版 → 设置 → 账号与安全 → 应用专用密码 → 生成新密码
- 或公共邮箱设置中生成对应密码
安装 swaks(跨平台邮件测试神器)
二、推荐写法(端口 587 – STARTTLS – 当前最稳定)
# 最常用写法(一行命令)
swaks \
--to 收件人测试邮箱@example.com \
--from "测试发件 <yourname@yourdomain.com>" \
--server smtp.larksuite.com:587 \
--auth LOGIN \
--auth-user yourname@yourdomain.com \
--auth-password xxxxxxxxxxxxxxxxxxxx \
--tls \
--header "Subject: swaks 测试邮件 - 587 端口" \
--body "这是一封来自 swaks 的测试邮件。\n\n发送时间:$(date '+%Y-%m-%d %H:%M:%S')\n测试环境:$(uname -a)"
关键参数说明:
| 参数 | 说明 | 必填 |
--to | 收件人(建议用自己能收到的邮箱测试) | 是 |
--from | 发件人显示名称 + 地址 | 是 |
--server | smtp.larksuite.com:587 | 是 |
--auth LOGIN | 认证方式(也可简写为 --auth) | 是 |
--auth-user | 完整邮箱地址 | 是 |
--auth-password | 应用专用密码(勿用普通密码!) | 是 |
--tls | 启用 STARTTLS 升级加密 | 是 |
--header | 自定义邮件头(如 Subject) | 推荐 |
--body | 邮件正文(支持 \n 换行) | 可选 |
三、端口 465 写法(直接 TLS / SMTPS)
部分旧系统或特定网络环境仍需使用 465 端口:
swaks \
--to 收件人测试邮箱@example.com \
--from yourname@yourdomain.com \
--server smtp.larksuite.com:465 \
--auth LOGIN \
--auth-user yourname@yourdomain.com \
--auth-password xxxxxxxxxxxxxxxxxxxx \
--tls-on-connect \
--header "Subject: swaks 测试邮件 - 465 端口" \
--body "测试正文 - 465 端口直接 TLS"
注意:使用 --tls-on-connect 而不是 --tls。
四、进阶实用示例
1. 带附件测试
swaks \
--to test@yourdomain.com \
--from yourname@yourdomain.com \
--server smtp.larksuite.com:587 \
--auth LOGIN --auth-user yourname@yourdomain.com \
--auth-password xxxxxxxxxxxxxxxxxxxx \
--tls \
--header "Subject: 带附件的 swaks 测试" \
--attach /tmp/report.pdf \
--attach /tmp/screenshot.png \
--body "请查收附件文件。"
2. 从文件读取正文(适合长邮件或模板)
swaks ... --body @/path/to/content.txt
3. 只测试连接 + 认证成功(不实际发信)
# 587 端口
swaks --server smtp.larksuite.com:587 \
--auth LOGIN --auth-user xxx@xxx.com --auth-password xxxxxx \
--tls --quit-after RCPT
# 465 端口
swaks --server smtp.larksuite.com:465 \
--auth LOGIN --auth-user xxx@xxx.com --auth-password xxxxxx \
--tls-on-connect --quit-after RCPT
成功标志:看到 250 2.0.0 OK 且没有报错。
4. 调试详细日志
swaks ... --debug # 或简写 -d
swaks ... -tlso # TLS 可选(失败也继续,调试用)
swaks ... --suppress-data # 隐藏正文,只看协议交互
五、常见报错及解决对照表
| 错误信息 | 原因分析 | 解决办法 |
| 535 5.7.8 / Authentication failed | 密码错误,或用了普通密码 | 使用「应用专用密码」或公共邮箱专用密码 |
| TLS / SSL handshake failed | 端口与加密参数不匹配 | 587 用 --tls,465 用 --tls-on-connect |
| Connection timed out / refused | 防火墙、代理、端口被阻断 | 换端口测试,或检查本地网络策略 |
| 550 5.7.1 From 地址被拒绝 | --from 与认证用户不一致 | 保持两者邮箱地址相同 |
| 554 5.7.1 策略拒绝 | 发信频率超限 / 未验证域名 | 检查企业邮箱发信限额,或联系管理员 |
六、小结与建议
优先使用 587 端口 + STARTTLS,这是 2026 年 Lark SMTP 最稳定、最兼容的方式。
永远不要在脚本中硬编码明文密码,建议使用环境变量或密码文件:
export SMTP_PASS="xxxxxxxxxxxxxxxxxxxx"
swaks ... --auth-password "$SMTP_PASS"
swaks 是调试 SMTP 的最佳工具之一,学会它能极大提升与各种邮件服务对接的效率。