Question

Je travaille sur un scénario KornShell (ksh) en cours d'exécution sur un serveur Solaris qui enverra un e-mail quand et condition d'erreur est remplie. J'envoie l'e-mail via mailx.

Question: Comment puis-je configurer l'adresse e-mail "From" sur la commande mailx

Code actuel:

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

Remarque:. La commande fonctionne très bien, cependant, la « From » est le nom de l'utilisateur que je suis en cours d'exécution du script et je voudrais pour cela à une autre adresse e-mail

Comment pourrais-je accomplir cela?

Était-ce utile?

La solution

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

mailx -r me@example.com -s ...

Autres conseils

L'option « -r » est invalide sur mes systèmes. Je devais utiliser une syntaxe différente pour le champ « From ».

-a "From: Foo Bar <foo.bar@someplace.com>"

Si vous voulez également inclure dans votre vrai nom dans le champ de, vous pouvez utiliser le format suivant

mailx -r "me@example.com (My Name)" -s "My Subject" ...

Si vous arrive d'avoir des caractères non-ASCII en votre nom, comme My AEÆoeøaaå (Æ = C3 86, ø = C3 B8, å = C3 A5), vous devez les coder comme ceci:

mailx -r "me@example.com (My =?utf-8?Q?AE=C3=86oe=C3=B8aa=C3=A5?=)" -s "My Subject" ...

Espérons que cela peut sauver quelqu'un d'une heure de travail / recherche!

Sur debian où bsd-mailx est installé par défaut, l'option -r ne fonctionne pas. Cependant, vous pouvez utiliser mailx -s subject recipient@abc.com -- -f sender@abc.com à la place. Selon la page de manuel, vous pouvez spécifier des options sendmail après --.

Le nail paquet fournit un mailx amélioré comme interface. Il inclut l'option -r.

Centos 5 installer le paquet mailx vous donne un programme appelé mail, qui ne prend pas en charge les options de mailx.

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

Sur un très vieux mail machine en marche Ubuntu, la syntaxe pour un e-mail bien composé est

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

Cependant sur une boîte CentOS 7 qui est venu avec mailx installé, il est tout à fait différent:

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

Activité de conseil man mail indique que -r est dépréciée et « De » adresse de l'expéditeur doit maintenant être réglé directement à l'aide -S "variable=value".

  

Dans les exemples suivants et ces, je définis comme $sender "Sender Name <sender.address@domain.tld>" et $recipients comme "recipient.name@domain.tld" comme je le fais dans mon script bash.

Vous pouvez alors trouver, 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 point d'envoyer l'e-mail, vous rencontrez un comportement étrange où le corps du message est plutôt attaché comme un fichier binaire ( "ATT00001.bin", "application / octet-stream" ou "noname", selon le client).

Ce comportement est de savoir comment gère Heirloom mailx caractères non reconnus / contrôle dans la saisie de texte. (Plus d'info: https://access.redhat.com/solutions/1136493 , qui lui-même références à la page man mailx pour la solution.)

Pour contourner ce problème, j'ai utilisé une méthode qui canalise la sortie générée par tr avant de passer à mail, et précise é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 suis aussi delaring explicitement les paramètres régionaux au préalable comme il est exécuté comme une tâche cron (et ne Cron hérite pas des variables d'environnement):

LANG="en_GB.UTF8" ; export LANG ;

(Un autre procédé de réglage de paramètres régionaux href="//unix.stackexchange.com/a/89596/15460"> cronjobs )

En savoir plus sur ces solutions de contournement via https://stackoverflow.com/a/29826988/253139 et https://stackoverflow.com/a/3120227/253139 .

macOS Sierra Sur, en créant ~ / .mailrc avec la configuration de smtp a fait l'affaire:

set smtp-use-starttls
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set smtp-auth-user=youremail@gmail.com
set smtp-auth-password=yourpass

Alors pour envoyer du courrier de CLI:

echo "your message" | mail -s "your subject" to_email@gmail.com

Sur Ubuntu Bionic 18,04, cela fonctionne comme vous le souhaitez:

$ echo -e "testing email via yourisp.com from command line\n\nsent on: $(date)" | mailx --append='FROM:Foghorn Leghorn <fleghorn@yourisp.com>' -s "test cli email $(date)" -- recipient@acme.com

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top