Каков формат передачи сообщения в sendmail?

Каков формат передачи сообщения в sendmail?

Я использую следующую команду для создания сообщений «на лету» и их отправки:

echo "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail [email protected]

Похоже, что когда вы отправляете информацию из файла, делая что-то вроде:

sendmail [email protected] mail.txt 

Затем sendmail видит каждую строку как заголовок и разбирает его. Но так, как я отправил выше, все оказывается в строке темы.

Если нужно отправить сообщение с заголовками в sendmail, то какой формат? Как это сделать?

решение1

Ваш echoоператор должен действительно выводить новые строки, а не последовательность \, за которой следует n. Вы можете сделать это, указав -eопцию:

echo -e "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail [email protected]

Чтобы понять, в чем разница, взгляните на вывод следующих двух команд:

echo "Subject:Hello \n\n I would like to buy a hamburger\n"
echo -e "Subject:Hello \n\n I would like to buy a hamburger\n"

решение2

«Документ здесь» в скриптах оболочки (Вы создаете заголовки и тело сообщения)

#!/bin/sh
[email protected]
/usr/sbin/sendmail -i $TO <<MAIL_END
Subject: Hello
To: $TO

I would like to buy a hamburger
MAIL_END

Текст сообщения из внешнего файла

#!/bin/sh
[email protected]
BODY_FILE=mail.txt
(cat - $BODY_FILE)<<HEADERS_END | /usr/sbin/sendmail -i $TO
Subject: Hello
To: $TO

HEADERS_END

Связанный контент