web-dev-qa-db-fra.com

Envoi de corps de message simple + fichier en pièce jointe à l'aide de Linux Mailx

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
9
Oh Chin Boon

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]
24
Johnsyweb

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

3
Vautschi

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]
1
Vishy

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]
0
Slothario

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
    }
;
0
Loretta

Vous pouvez essayer ceci:

(cat ./body.txt)|mailx -s "subject text" -a "attchement file" [email protected]
0
Ray S