
Я использую следующую команду для создания сообщений «на лету» и их отправки:
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