Qual è il formato per inviare un messaggio a sendmail?


22

Sto usando il seguente comando per creare messaggi al volo e inviarli:

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

Sembra che quando invii le informazioni da un file, facendo qualcosa del tipo:

sendmail email@example.com mail.txt 

Quindi sendmail vede ogni riga come intestazione e la analizza. Ma il modo in cui l'ho inviato sopra, tutto finisce nella riga dell'oggetto.

Se si desidera fare eco a un messaggio completo di intestazioni, in sendmail, qual è il formato? Come si fa?

Risposte:


24

La tua echoaffermazione dovrebbe davvero produrre nuove righe non la sequenza \seguita da n. Puoi farlo fornendo l' -eopzione:

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

Per capire qual è la differenza, dai un'occhiata all'output dei due comandi seguenti:

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

"Here document" negli script della shell (componi le intestazioni e il corpo del messaggio)

#!/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

Corpo del messaggio da un file esterno

#!/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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.