In welchem ​​Format wird eine Nachricht an sendmail weitergeleitet?


22

Ich verwende den folgenden Befehl, um Nachrichten im laufenden Betrieb zu erstellen und zu senden:

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

Es scheint, dass Sie, wenn Sie die Informationen aus einer Datei senden, folgendermaßen vorgehen:

sendmail email@example.com mail.txt 

Dann sieht sendmail jede Zeile als Header und analysiert sie. Aber so wie ich es oben gesendet habe, endet alles in der Betreffzeile.

Wenn man eine Nachricht mit Kopfzeilen in sendmail ausgeben möchte, in welchem ​​Format? Wie macht man das?

Antworten:


24

Ihre echoAnweisung sollte wirklich Zeilenumbrüche ausgeben, nicht die Reihenfolge, der \gefolgt wird n. Sie können dies tun, indem Sie die folgende -eOption angeben:

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

Um den Unterschied zu verstehen, sehen Sie sich die Ausgabe der folgenden beiden Befehle an:

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

"Hier dokumentieren" in Shell-Skripten (Sie verfassen Nachrichtenköpfe und -körper)

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

Nachrichtentext aus externer Datei

#!/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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.