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

22

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

echo "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail email@example.com

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

sendmail email@example.com mail.txt 

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

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

Кайзер Созай
источник

Ответы:

24

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

echo -e "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail email@example.com

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

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"
Энтон
источник
1

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

#!/bin/sh
TO=email@example.com
/usr/sbin/sendmail -i $TO <<MAIL_END
Subject: Hello
To: $TO

I would like to buy a hamburger
MAIL_END

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

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

HEADERS_END
Анфи
источник