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構造を使用する必要がある場合は、文字列を1つずつ貼り付けたくありません。一部のバージョンでは、mail
添付ファイルを含む適切なMIMEメッセージを組み合わせることができ、より複雑な要件がある場合はmailx
それを見ることができます。mutt
一般的な間違いは次のとおりです。
<
アドレスヘッダーから古いスペースを省略するか、特定のヘッダーフィールドの周りに奇妙な引用符を配置する必要があるという奇妙な主張- タイトルと本文の間の空白行を忘れてください。
- 本文(追加のMIMEヘッダーなし)がHTMLやマルチパートではなくプレーンテキストであることを理解しないでください。
- 本文に非常に長い行を入力します(SMTPは1行あたり1000文字未満を許可します。この制限を破るには適切なMIMEラッピングを使用してください)。
- 文字セットを宣言せずにUnicodeを使用してみてください。 (期待していますが、これを行うにはMIMEを学んで使用してください。)
また参考にしてくださいBashとシェルスクリプト変数の大文字と小文字を修正
答え4
echo -e "Subject:$sub" |sendmail -f [email protected] -t [email protected]. < body_detail.txt