这个项目能做什么

sendsmtp 是一个用纯 Python 实现的小型命令行 SMTP 客户端,没有第三方依赖。它编写一条 UTF-8 纯文本邮件并将其交给 SMTP server,非常适合用于脚本通知、构建报告或从 shell 将命令输出管道传输到电子邮件中。 安装与要求 该软件包通过 pip 安装(python3 -m pip install --user --upgrade sendsmtp),需要 Python 3.11 或更高版本。 基本用法 该命令接收三个位置参数:HOST(SMTP 服务器的主机名或 IP)、FROM(既用作 SMTP 信封发件人,又用作 From 标头)和 TO(一个地址或多个用逗号分隔且逗号前后无空格的地址)。典型调用使用 -m 在行内发送正文,使用 -s 发送主题,并在服务器接受消息时报告成功。 消息正文来源 正文可以来自三个地方。-m/--message 选项提供行内正文。-i/--input 选项从文件路径读取正文,并且优先级高于 --message;如果该路径不是现有文件,则该选项会被忽略,正文会回退到 --message 或标准输入(stdin)。如果未给出这两个选项,则从 stdin 读取正文:管道输入会读取到 EOF,而交互式终端会触发提示,读取行直到遇到仅包含 EOF 的行。 主题处理 --subject/-s 用于显式设置主题。如果省略该选项且正文以 Subject: 行开头,则该行会从正文中剥离,并转而用作主题。 连接安全与端口 该客户端支持三种模式。纯 SMTP 默认使用端口 25。--starttls 以纯文本连接并使用 STARTTLS 扩展升级连接,默认端口为 587。-t/--tls 从第一个字节开始使用隐式 TLS (SMTPS),默认端口为 465。这两个 TLS 选项是互斥的,-p/--port 会覆盖任何模式下的默认端口。 身份验证 -u/--username 启用 SMTP AUTH;如果没有它,则不会尝试 AUTH。如果给出了用户名但没有给出密码,则会交互式提示输入密码且不回显。文档指出这是首选做法,因为命令行可能会被其他进程看到并记录在 shell 历史记录中。身份验证失败会中止运行且不会发送消息。 TO 之外的收件人 -c/--cc 添加抄送收件人,他们会出现在 CC 标头中并接收消息。-b/--bcc 添加密送收件人,他们接收消息但不会列在任何标头中。这两者都接受逗号分隔的地址列表。 诊断 -v/--verbose 将 SMTP 对话打印到标准错误 (stderr),报告连接和身份验证步骤,列出消息发送到的地址,并且在失败时显示完整的堆栈跟踪,而不是单行错误。如果没有该选项,失败时会产生单行错误消息。 消息标头与退出代码 生成的消息带有 From、To、Subject、CC(仅在使用 --cc 时)以及 X-Mailer: sendsmtp 标头。退出代码 0 表示服务器接受了发往每个收件人的消息,1 表示发生错误或至少有一个收件人被拒绝,130 表示通过 Ctrl-C 发出中断信号。 许可协议 该项目在 MIT 许可协议下发布。