Ceci est le code que j'ai dans un script bash qui s'exécute comme un cronjob. Le cronjob est exécuté en tant que root.
/usr/sbin/sendmail [email protected]<<EOF
subject:Backup Error!
from:backup@server01
$error
EOF
Il y a un code après cela et le courrier électronique que je reçois est le suivant:
De l'utilisateur root sur la machine.
et le message comprend:
subject:Backup Error!
from:backup@server01
$error
EOF
More code...
that is in the script
all the way to the end...
J'ai essayé d'autres variantes, c'est le plus proche que j'ai. J'ai essayé ceci dans un script régulier et cela a fonctionné correctement. Que se passe-t-il et comment puis-je envoyer ce courrier électronique en spécifiant le sujet et l'expéditeur du formulaire?
Les réponses précédentes ont déjà mentionné:
Corrections supplémentaires:
-i
Option de ligne de commande pour arrêter le traitement spécial des lignes commençant par un point.--
pour séparer les options de ligne de commande des adresses des destinataires (bonne recommandation de style)Script corrigé:
/usr/sbin/sendmail -i -- [email protected] <<EOF
subject: Backup Error!
from:backup@server01
$error
EOF
Sendmail (et le courrier électronique en général, semble-t-il) nécessite une ligne vierge entre les en-têtes et le corps. L'exemple suivant a fonctionné.
$ sendmail [email protected] <<EOF
> subject: testing
> from: [email protected]
>
> This is my body!
> EOF
(Évidemment, coller cela avec le >
s ne marchera pas, modifiez ce que vous faites pour qu'il y ait une ligne vide entre vos en-têtes et le message d'erreur).
Je vous suggère de ne pas utiliser de caractère d'espacement avant ou après la deuxième chaîne limite EOF
. Si vous n'utilisez qu'un seul espace devant ou après la chaîne limite, ce bloc de code à usage spécifique ne fonctionnera jamais. Donc, utilisez seulement:
EOF
Et vous devriez lire quelques guides de script bash dans ce sens comme Chapitre 19. Ici Documents .