命令行发信测试
命令行发信有两个常用工具。swaks 专为 SMTP 测试而设计:认证方式、加密选项、正文来源都能用参数指定,并且会把完整会话打印出来,定位问题非常直接。curl 也能直接向邮件提交端口上传一封邮件,适合已经以 curl 为核心的脚本环境。两者都支持加密通道,务必区分信封发件人与信头里的发件人,二者可以不同。
基本信息
| swaks 优势 | 专为 SMTP 测试设计,输出完整会话过程 |
|---|---|
| curl 优势 | 无需额外安装,脚本环境里随手可用 |
| 正文文件 | 需包含必要信头、空行与正文 |
| 信封发件人 | 由命令行参数指定,退信寄往该地址 |
| 信头发件人 | 写在正文文件里,展示给收件人看 |
| 加密方式 | 提交端口配显式升级,专用端口直接加密 |
swaks 发信
swaks 发信
swaks --to you@example.net --from me@example.com \
--server smtp.example.com:587 --auth LOGIN \
--auth-user me@example.com --auth-password '应用密码' --tls
# 便于定位时打印完整会话过程
swaks --to you@example.net --server smtp.example.com:587 --auth LOGIN \
--auth-user me@example.com --auth-password '应用密码' --tls --dump-as-bodycurl 提交邮件
curl 提交邮件
curl --url 'smtps://smtp.example.com:465' --ssl-reqd \
--mail-from 'me@example.com' --mail-rcpt 'you@example.net' \
--user 'me@example.com:应用密码' --upload-file mail.txt
# mail.txt 需含 From、To、Subject 信头与空行后的正文典型使用场景
- 验证提交端口与认证配置是否可用:发一封到自身邮箱
- 排查认证失败:看完整会话定位到底停在哪一步
- 投递链路测试:确认信封发件人与信头发件人设置是否正确
- CI 流程里的通知验证:用脚本确认告警邮件通道畅通
- 建立可复现的测试手段:参数化发信比手工在客户端里点更能说明问题
信封发件人决定退信寄回哪里,信头发件人决定收件人看到什么,两者不一致在合法场景下是常见做法,但排障时要意识到测试结果里的退信地址未必等于你写在正文里的那个。用 curl 提交时如果传错了信封发件人,认证可能通过但投递仍会被拒。