
Ich verwende den folgenden Befehl, um Nachrichten im Handumdrehen zu erstellen und zu senden:
echo "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail [email protected]
Es scheint, dass Sie die Informationen aus einer Datei senden, indem Sie etwa Folgendes tun:
sendmail [email protected] mail.txt
Dann betrachtet sendmail jede Zeile als Header und analysiert sie. Aber so wie ich es oben gesendet habe, landet alles in der Betreffzeile.
Wenn Sie eine Nachricht mit allen Headern in Sendmail zurücksenden möchten, welches Format muss dafür verwendet werden? Wie geht das?
Antwort1
Ihre echo
Anweisung sollte wirklich Zeilenumbrüche ausgeben und nicht die Sequenz, \
der ein folgt n
. Sie können das erreichen, indem Sie die -e
Option angeben:
echo -e "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail [email protected]
Um den Unterschied zu verstehen, schauen 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"
Antwort2
„Hier dokumentieren“ in Shell-Skripten (Sie verfassen Nachrichtenkopfzeilen und -text)
#!/bin/sh
[email protected]
/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
[email protected]
BODY_FILE=mail.txt
(cat - $BODY_FILE)<<HEADERS_END | /usr/sbin/sendmail -i $TO
Subject: Hello
To: $TO
HEADERS_END