Sending e-mail from sendmail with headers

emailsendmailsmtp-headers

I'm trying to send an e-mail with sendmail, but I need to specify some headers (From, Content-Type, Subject). Here is the command I am currently running:

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

The problem is that the headers are not being set. Do I have the format correct?

Best Answer

You need to use echo with the 'e' parameter.

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

If you look at the result of sending mail with your command you see the following:

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

(It literally shows up as above as a single line, including the 'special characters')

Applying the above, slight, modification allows your code to work fine:

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