Pregunta

Estoy trabajando en un guión KornShell (ksh) que se ejecuta en un servidor Solaris que enviará un correo electrónico cuando y se cumple la condición de error. Voy a enviar el correo electrónico a través de mailx.

Pregunta:? ¿Cómo se configura el campo "De" dirección de correo electrónico en el comando mailx

Código actual:

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

Nota:. El comando funciona bien, sin embargo, el "De" es el nombre del usuario que estoy ejecutando el script como y me gustaría que esto a otra dirección de correo electrónico

¿Cómo puedo lograr esto?

¿Fue útil?

Solución

Puede utilizar la opción "-r" para ajustar la dirección del remitente:

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

Otros consejos

La opción "-r" no es válido en mis sistemas. Tuve que usar una sintaxis diferente para el campo "De".

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

En caso de que también quieren incluir su nombre real en el de campo, puede utilizar el siguiente formato

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

Si le sucede que tiene caracteres no ASCII en que nombre, como Mi AEÆoeøaaå (Æ = C3 86, ø = C3 B8, a = C3 A5), usted tiene que codificar como esto:

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

Espero que esto puede salvar a alguien de una hora de trabajo / investigación!

En Debian, donde bsd-mailx se instala por defecto, la opción -r no funciona. Sin embargo se puede utilizar en lugar mailx -s subject recipient@abc.com -- -f sender@abc.com. De acuerdo a la página hombre, puede especificar opciones para Sendmail después --.

El nail paquete proporciona un mailx mejorada como interfaz. Incluye la opción -r.

En Centos 5 que instalar el paquete de mailx da un programa llamado mail, que no soporta las opciones mailx.

Sólo se encontró con este problema de sintaxis en una máquina CentOS 7.

En un muy antiguo mail funcionamiento de la máquina de Ubuntu, la sintaxis de un correo electrónico muy bien compuesto es

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

Sin embargo, en una caja de CentOS 7, que venía con mailx instalado, es muy diferente:

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

man mail Consulting indica que -r es obsoleto y la dirección 'De' remitente ahora debe ajustarse directamente usando -S "variable=value".

  

En estos y los siguientes ejemplos, estoy definiendo como $sender "Sender Name <sender.address@domain.tld>" y $recipients como "recipient.name@domain.tld" como lo hago en mi escritura del golpe.

A continuación, puede encontrar, como yo, que cuando intenta generar el contenido del cuerpo del correo electrónico en su script en el punto de envío del correo electrónico, se encuentra con un comportamiento extraño en el cuerpo del correo electrónico en su lugar se adjunta como un archivo binario ( "ATT00001.bin", "application / octet-stream" o "noname", dependiendo del cliente).

Este comportamiento es como herencia mailx maneja caracteres no reconocidos / control de entrada de texto. (Más información: https://access.redhat.com/solutions/1136493 , que a su vez hace referencia a la página del manual mailx para la solución.)

Para evitar esto, he usado un método que tubos de la salida generada a través de tr antes de pasar a mail, y también especifica el juego de caracteres del correo electrónico:

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

En mi guión, también estoy delaring explícitamente la configuración regional de antemano, ya que está ejecutando como una tarea programada (cron y no hereda las variables ambientales):

LANG="en_GB.UTF8" ; export LANG ;

(Un método alternativo de establecer locales para cronjobs se discute aquí )

Más información sobre estas soluciones a través de https://stackoverflow.com/a/29826988/253139 y https://stackoverflow.com/a/3120227/253139 .

en MacOS Sierra, creando ~ / .mailrc con la configuración SMTP resolvieron el problema:

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

A continuación, enviar correo desde la CLI:

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

En Ubuntu 18.04 biónica, esto funciona como se desea:

$ 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top