Назад | Перейти на главную страницу

Отправка электронной почты из sendmail с заголовками

Я пытаюсь отправить электронное письмо с sendmail, но мне нужно указать некоторые заголовки (From, Content-Type, Subject). Вот команда, которую я сейчас выполняю:

echo "Content-Type: text/plain\r\nFrom: do-not-reply@mydomain.com\r\nSubject: Test\r\n\r\nThe body goes here" | sendmail -f do-not-reply@mydomain.com admin@mydomain.com

Проблема в том, что заголовки не устанавливаются. У меня правильный формат?

Вам нужно использовать echo с параметром 'e'.

 -e  
    Enable interpretation of the following backslash-escaped characters in each STRING:  
      \n          new line  
      \r          carriage return

Если вы посмотрите на результат отправки почты с помощью вашей команды, вы увидите следующее:

Content-Type: text/plain\r\nFrom: do-not-reply@mydomain.com\r\nSubject: Test\r\n\r\nThe body goes here

(Он буквально отображается, как указано выше, как одна строка, включая «специальные символы»)

Применение вышеуказанной небольшой модификации позволяет вашему коду нормально работать:

echo -e "Content-Type: text/plain\r\nFrom: do-not-reply@mydomain.com\r\nSubject: Test\r\n\r\nThe body goes here" | sendmail -f do-not-reply@mydomain.com admin@mydomain.com

Используйте printf

printf "Content-Type: text/plain\r\nFrom: do-not-reply@mydomain.com\r\nSubject: Test\r\n\r\nThe body goes here" | sendmail -f do-not-reply@mydomain.com admin@mydomain.com