如何为sendmail功能添加主题

如何为sendmail功能添加主题

我在 ksh 中有以下行代码:

echo -e "$SUBJECT"|/usr/sbin/sendmail -f [email protected] -t [email protected]

但我仍然把它$SUBJECT放在身体里,而不是真正的主题。它出什么问题了?

答案1

有时发送所有标头会更容易echo

例如

{
  echo From: xxxx
  echo To: yyyy
  echo Subject: Foobar
  echo 
  echo This is the message
} | /usr/lib/sendmail -t

答案2

主题是标题的一部分,请尝试:

echo -e "Subject:$SUBJECT" | /usr/sbin/sendmail -f [email protected] -t [email protected]

答案3

你真的想避开echo -e这里。事实上,选择它的原因有很多printf,其中最重要的就是方便。

printf '%s\n' "Subject: $subject" \
   "From: I am a Sender <[email protected]>" \
   "To: Recipient <[email protected]>" \
   "" \
   "This is the body of the message." \
   "It spans multiple lines." |
sendmail -oi -t

空行 ( "") 将标头与消息正文分隔开。简单的 SMTP 消息只是纯文本,仅 US-ASCII。

它能做的事情仍然相当有限。如果您需要使用非 ASCII 字符集或重要的 MIME 结构,您确实不希望将字符串一个接一个地粘贴。某些版本mail或允许您使用附件组装适当的 MIME 消息,或者如果您有更复杂的需求,mailx则可以查看。mutt

常见错误包括

  • 奇怪地坚持省略<地址标头中 之前的空格,或者在某些标头字段周围放置奇怪的引号
  • 忘记标题和正文之间的空行
  • 不明白正文(在没有更多 MIME 标头的情况下)只是纯文本,而不是 HTML 或多部分
  • 在正文中放入非常长的行(SMTP 允许每行少于 1000 个字符;同样,使用适当的 MIME 封装来打破此限制)
  • 尝试在不声明字符集的情况下使用 Unicode(你猜对了,学习并使用 MIME 来做到这一点)

另请注意正确的 Bash 和 shell 脚本变量大小写

答案4

echo -e "Subject:$sub" |sendmail -f [email protected] -t [email protected]. < body_detail.txt

相关内容