Domanda

Sto lavorando su uno script KornShell (ksh) in esecuzione su un server Solaris che invierà una e-mail quando e condizione di errore è soddisfatta. Io mando l'e-mail tramite mailx.

Domanda:? Come faccio a impostare il "Da" indirizzo di posta elettronica sul comando mailx

Codice attuale:

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

. Nota: Il comando funziona bene, però, il "Da" è il nome dell'utente sto facendo funzionare lo script come e vorrei per questo a un altro indirizzo e-mail

Come potrei fare questo?

È stato utile?

Soluzione

È possibile utilizzare l'opzione "-r" per impostare l'indirizzo del mittente:

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

Altri suggerimenti

L'opzione "-r" non è valido sui miei sistemi. Ho dovuto usare una sintassi diversa per il campo "Da".

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

Nel caso in cui anche voler includere il tuo vero nome nel da-campo, è possibile utilizzare il seguente formato

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

Se vi capita di avere caratteri non ASCII in voi nome, come mio AEÆoeøaaå (Æ = C3 86, ø = C3 B8, a = C3 A5), è necessario codificarli in questo modo:

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

Spero che questo può salvare qualcuno un'ora di duro lavoro / ricerca!

Il debian dove bsd-mailx è installato di default, l'opzione -r non funziona. Tuttavia è possibile utilizzare invece mailx -s subject recipient@abc.com -- -f sender@abc.com. Secondo la pagina man, è possibile specificare le opzioni di sendmail dopo --.

Il nail pacchetto fornisce una maggiore mailx come l'interfaccia. Esso include l'opzione -r.

su CentOS 5 si installa il pacchetto mailx dà un programma chiamato mail, che non supporta le opzioni mailx.

Proprio imbattuto in questo problema di sintassi su una macchina CentOS 7.

In una vecchia macchina Ubuntu mail esecuzione, la sintassi per una e-mail ben composto è

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

Tuttavia su una scatola di CentOS 7 che è venuto con mailx installato, è ben diversa:

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

Consulenza man mail indica che -r è deprecato e il 'Da' indirizzo del mittente dovrebbe ora essere impostata direttamente utilizzando -S "variable=value".

  

In questi esempi e successive, sto definendo $sender come "Sender Name <sender.address@domain.tld>" e $recipients come "recipient.name@domain.tld" come faccio io nel mio script bash.

Si può quindi trovare, come ho fatto io, che quando si tenta di generare contenuto del corpo dell'e-mail nello script al punto di inviare l'e-mail, si incontra uno strano comportamento in cui il corpo e-mail è invece allegato come un file binario ( "ATT00001.bin", "application / octet-stream" o "noname", a seconda del cliente).

Questo comportamento è il modo Heirloom mailx gestisce caratteri non riconosciuti / controllo in inserimento del testo. (Per saperne di più: https://access.redhat.com/solutions/1136493 , che si fa riferimento la pagina man mailx per la soluzione.)

Per aggirare il problema, ho usato un metodo che i tubi l'output generato attraverso tr prima di passare alla mail, e specifica anche il set di caratteri della e-mail:

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

Nel mio script, sto anche delaring esplicitamente il locale in anticipo, come è gestito come un cronjob (e cron non eredita variabili ambientali):

LANG="en_GB.UTF8" ; export LANG ;

(Un metodo alternativo di regolazione locali per cronjobs è discusso qui )

Più informazioni su queste soluzioni alternative tramite https://stackoverflow.com/a/29826988/253139 e https://stackoverflow.com/a/3120227/253139 .

su MacOS Sierra, creando ~ / .mailrc con l'installazione smtp ha fatto il trucco:

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

Poi, per inviare la posta da CLI:

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

Su Ubuntu 18.04 Bionic, questo funziona, se lo desideri:

$ 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top