J'écris un Shell script
pour envoyer un email en utilisant Linux Mailx
, l'e-mail doit contenir une pièce jointe et un corps de message.
En train d'envoyer un email avec une pièce jointe:
output.txt | mail -s "Daily Monitoring" [email protected]
Je souhaite ajouter un corps de message. Comment devrais-je?
Linux Mailx:
mail [-eIinv] [-a header] [-b addr] [-c addr] [-s subj] to-addr
La méthode habituelle consiste à utiliser uuencode
pour les pièces jointes et echo
pour le corps:
(uuencode output.txt output.txt; echo "Body of text") | mailx -s 'Subject' [email protected]
Pour Solaris et AIX, vous devrez peut-être d'abord placer l'instruction echo
:
(echo "Body of text"; uuencode output.txt output.txt) | mailx -s 'Subject' [email protected]
Le meilleur moyen est d'utiliser mpack!
mpack -s "Subject" -d "./body.txt" "././image.png" adresse mail
mpack - sujet - corps - pièce jointe - adresse mail
Essayez ceci cela fonctionne pour moi:
(echo "Hello XYX" ; uuencode /export/home/TOTAL_SI_COUNT_10042016.csv TOTAL_SI_COUNT_10042016.csv ) | mailx -s 'Script test' [email protected]
La réponse de Johnsyweb n'a pas fonctionné pour moi, mais cela a fonctionné pour moi avec Mutt:
echo "Message body" | mutt -s "Message subject" -a myfile.txt [email protected]
Sur RHEL Linux, j’ai eu de la difficulté à insérer mon message dans le corps du courrier électronique au lieu de l’attacher. En utilisant od -cx, j'ai découvert que le corps de mon email contenait plusieurs/r. J'ai utilisé un script Perl pour effacer le/r et le message a été correctement inséré dans le corps de l'e-mail.
mailx -s "subject text" [email protected] < 'body.txt'
Le fichier texte body.txt contenait le caractère\r, j’ai donc utilisé Perl pour déshabiller.
cat body.txt | Perl success.pl > body2.txt
mailx -s "subject text" [email protected] < 'body2.txt'
C'est success.pl
while (<STDIN>) {
my $currLine = $_;
s?\r??g;
print
}
;
Vous pouvez essayer ceci:
(cat ./body.txt)|mailx -s "subject text" -a "attchement file" [email protected]