web-dev-qa-db-fra.com

Comment définir l'adresse électronique De pour la commande mailx?

Je travaille sur un script KornShell (ksh) s'exécutant sur un serveur Solaris qui enverra un courrier électronique dès qu'une condition d'erreur sera remplie. J'envoie l'email par mailx. 

Question: Comment définir l'adresse e-mail "De" sur la commande mailx?

Code actuel:

echo ${msg_txt} | mailx -s "Script Failure" ${to_email}

Remarque: la commande fonctionne correctement. Toutefois, le nom "De" correspond au nom de l'utilisateur sur lequel le script est exécuté et que je souhaite pour cela sur une autre adresse électronique.

Comment pourrais-je accomplir ceci? 

31
AieshaDot

Vous pouvez utiliser l'option "-r" pour définir l'adresse de l'expéditeur:

mailx -r [email protected] -s ...
36
sth

L'option "-r" n'est pas valide sur mes systèmes. J'ai dû utiliser une syntaxe différente pour le champ "De".

-a "From: Foo Bar <[email protected]>"
34
Finch_Powers

Si vous souhaitez également inclure votre vrai nom dans le champ from, vous pouvez utiliser le format suivant:

mailx -r "[email protected] (My Name)" -s "My Subject" ...

Si vous avez des caractères non-ASCII dans votre nom, tels que Mon AEÆoeøaaå (= C3 86, ø = C3 B8, å = C3 A5), vous devez les encoder comme suit:

mailx -r "[email protected] (My =?utf-8?Q?AE=C3=86oe=C3=B8aa=C3=A5?=)" -s "My Subject" ...

J'espère que cela permettra à quelqu'un d'économiser une heure de travail et de recherche!

22
Rune

Sur Debian où bsd-mailx est installé par défaut, l’option -r ne fonctionne pas. Cependant, vous pouvez utiliser mailx -s subject [email protected] -- -f [email protected] à la place. Selon la page de manuel, vous pouvez spécifier les options de sendmail après --.

10
Marki555

Le paquetage nail fournit une interface améliorée semblable à mailx. Il inclut l'option -r.

Sur Centos 5, l’installation du package mailx vous fournit un programme appelé mail, qui ne prend pas en charge les options mailx.

1
Neik

Je viens de rencontrer ce problème de syntaxe sur une machine CentOS 7.

Sur une très ancienne machine Ubuntu exécutant mail, la syntaxe d’un courrier électronique bien composé est la suivante:

echo -e "$body" | mail -s "$subject" -a "From: Sender Name <$sender>" "$recipient"

Cependant, sur un boîtier CentOS 7 livré avec mailx installé, il en va tout autrement:

echo -e "$body" | mail -s "$subject" -S "from=Sender Name <$sender>" "$recipient"

Consulting man mail indique que -r est obsolète et que l'adresse de l'expéditeur "De" doit maintenant être définie directement à l'aide de -S "variable=value".

Dans ces exemples et les suivants, je définis $sender en tant que "Sender Name <[email protected]>" et $recipients en tant que "[email protected]" comme je le fais dans mon script bash.

Vous constaterez peut-être, comme je l'ai fait, que lorsque vous essayez de générer le contenu du corps de l'e-mail dans votre script au moment de l'envoi de l'e-mail, vous rencontrez un comportement étrange: le corps de l'e-mail est plutôt joint sous forme de fichier binaire ("ATT00001. bin "," application/octet-stream "ou" noname ", selon le client).

C'est ce comportement qui permet à Heirloom mailx de gérer les caractères non reconnus/de contrôle dans la saisie de texte. (Plus d'infos: https://access.redhat.com/solutions/1136493 , qui fait lui-même référence à la page de manuel mailx pour la solution.)

Pour contourner cela, j'ai utilisé une méthode qui dirige la sortie générée via tr avant de passer à mail, et spécifie également le jeu de caractères de l'e-mail:

echo -e "$body" | tr -d \\r | mail -s "$subject" -S "from=$sender" -S "sendcharsets=utf-8,iso-8859-1" "$recipients"

Dans mon script, je décris aussi explicitement les paramètres régionaux au préalable, car ils sont exécutés sous forme de travail cron (et ce dernier n'hérite pas des variables d'environnement):

LANG="en_GB.UTF8" ; export LANG ;

(Une autre méthode pour définir les paramètres régionaux pour cronjobs est discutée ici )

Plus d'informations sur ces solutions de contournement via https://stackoverflow.com/a/29826988/253139 et https://stackoverflow.com/a/3120227/253139 .

0
Chris Woods

Sur macOS Sierra, créer ~/.mailrc avec l’installation smtp a joué le jeu suivant:

set smtp-use-starttls
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set [email protected]
set smtp-auth-password=yourpass

Ensuite, pour envoyer un courrier à partir de CLI:

echo "your message" | mail -s "your subject" [email protected]
0
kitschmaster