我可以让 SSMTP 自动设置“To:”标头吗?

cwd*_*cwd 2 linux ubuntu email ssmtp

我正在使用 ssmtp 包通过 g-mail 发送电子邮件。一切都工作正常 - 唯一奇怪的是,如果我通过命令行发送邮件,“收件人字段”很时髦。

ssmtp me@domain.com < message.txt
Run Code Online (Sandbox Code Playgroud)

基本上,“收件人”字段只会显示“未公开的收件人”

我读到您可以设置包含“收件人:”字段的标头,但是当我mail在其他系统上使用该命令时,这似乎过于复杂,它会自动执行此操作。

有没有一种更简单的方法可以通过命令行使用ssmtp- 发送邮件,但无需更改上述语法或指定其他参数?(可能是一个配置文件,用于将“收件人”地址设置为指定的任何地址。

bah*_*mat 6

这种情况源于对所做事情的误解ssmtp邮件信封(邮件服务器用于路由邮件)和邮件正文(显示在电子邮件客户端中)之间存在非常重要的区别。两者都可能有ToFrom,并且它们可能彼此不同。这没关系!

ssmtp仅创建信封并促进将邮件传输到 MTA。它期望您传递给它的正文完全成形并包含所有正文标头。它不会为您添加任何内容*(尽管它会插入消息处理标头,例如,Received-by等)。我相信您也注意到这些消息中也没有Subject:

所以你的问题的答案是该To:字段需要包含在message.txt.

要使To:Subject:字段显示,您需要message.txt像这样设置格式:

To: cwd@gmail.com
Subject: Message for you

Message text starts here.
blah blah blah.
Run Code Online (Sandbox Code Playgroud)

*这并不完全正确。由于From:标头是唯一必需的标头,因此将从信封中派生标头并在缺少标头时将其插入。