我正在使用 ssmtp 包通过 g-mail 发送电子邮件。一切都工作正常 - 唯一奇怪的是,如果我通过命令行发送邮件,“收件人字段”很时髦。
ssmtp [email protected] < message.txt
基本上,“收件人”字段只会显示“未公开的收件人”
我读到您可以设置包含“收件人:”字段的标头,但是当我mail
在其他系统上使用该命令时,这似乎过于复杂,它会自动执行此操作。
有没有一种更简单的方法可以通过命令行使用ssmtp
- 发送邮件,但无需更改上述语法或指定其他参数? (可能是一个配置文件,用于将“收件人”地址设置为指定的任何地址。
答案1
这种情况源于对ssmtp
所做事情的误解。消息之间有一个非常重要的区别信封(哪些邮件服务器用于路由邮件)和消息身体(显示在您的电子邮件客户端中)。两者都可能有To
和From
,并且它们可能彼此不同。这是好的!
ssmtp
仅创建信封并促进将邮件传输到 MTA。它期望你传递给它的身体完全成形并且包含所有正文标头。它不会为您添加任何内容*(尽管它会插入消息处理标头,例如,Received-by
等)。我相信您也注意到Subject:
这些消息中也没有。
所以你的问题的答案是该To:
字段需要包含在message.txt
.
要使To:
和Subject:
字段显示,您需要message.txt
像这样设置格式:
To: [email protected]
Subject: Message for you
Message text starts here.
blah blah blah.
*这并不完全正确。由于From:
标头是唯一必需的标头,因此将从信封中派生标头并在缺少标头时将其插入。