Quel est le format pour envoyer un message dans sendmail?

22

J'utilise la commande suivante pour créer des messages à la volée et les envoyer:

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

Il semble que lorsque vous envoyez des informations à partir d'un fichier, en faisant quelque chose comme:

sendmail email@example.com mail.txt 

Sendmail voit ensuite chaque ligne comme un en-tête et les analyse. Mais la façon dont je l'ai envoyé ci-dessus, tout se termine dans la ligne d'objet.

Si l'on veut faire écho d'un message complet avec des en-têtes, dans sendmail, alors quel est le format? Comment fait-on?

Kaizer Sozay
la source

Réponses:

24

Votre echodéclaration devrait vraiment produire des sauts de ligne et non la séquence \suivie n. Vous pouvez le faire en fournissant l' -eoption:

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

Pour comprendre quelle est la différence, regardez la sortie des deux commandes suivantes:

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"
Anthon
la source
1

"Here document" dans les scripts shell (vous composez les en-têtes et le corps des messages)

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

Corps du message depuis un fichier externe

#!/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
AnFi
la source