mail -s "subject" [email protected] <test.html
funciona, pero solo para correo electrónico de texto sin formato.
¿Cuál es la forma correcta de enviar correo electrónico HTML usando el comando Linux mail
?
fuente
mail -s "subject" [email protected] <test.html
funciona, pero solo para correo electrónico de texto sin formato.
¿Cuál es la forma correcta de enviar correo electrónico HTML usando el comando Linux mail
?
Hay muchas versiones diferentes de mail
alrededor. Cuando va más allá mail -s subject to1@address1 to2@address2 <body
(para enviar, eso es todas las garantías POSIX , e incluso -s
no existía en los viejos tiempos ), tienden a tener diferentes opciones de línea de comando. Agregar un encabezado adicional no siempre es fácil.
Con algunas mailx
implementaciones, por ejemplo, a partir mailutils
de Ubuntu o Debianbsd-mailx
, es fácil, porque hay una opción para eso.
mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
Con la herencia mailx
, no hay una manera conveniente. Una posibilidad para insertar encabezados arbitrarios es establecer editheaders=1
y usar un editor externo (que puede ser un script).
## Prepare a temporary script that will serve as an editor.
## This script will be passed to ed.
temp_script=$(mktemp)
cat <<'EOF' >>"$temp_script"
1a
Content-Type: text/html
.
$r test.html
w
q
EOF
## Call mailx, and tell it to invoke the editor script
EDITOR="ed -s $temp_script" heirloom-mailx -S editheaders=1 -s "Subject" to@address <<EOF
~e
.
EOF
rm -f "$temp_script"
Con un POSIXmailx
general , no sé cómo llegar a los encabezados.
Si vas a usar cualquiera mail
o mailx
, ten en cuenta que
mail
y mailx
.mail
y mailx
trata las líneas que comienzan con ~
como comandos. Si canaliza texto mail
, debe organizar que este texto no contenga líneas que comiencen por ~
.Si va a instalar software de todos modos, también podría instalar algo más predecible que mail
/ Mail
/ mailx
. Por ejemplo, mutt . Con Mutt, puede suministrar la mayoría de los encabezados en la entrada con la -H
opción, pero noContent-Type
, que debe configurarse mediante una opción de mutt.
mutt -e 'set content_type=text/html' -s 'hello' 'to@address' <test.html
O puede invocar sendmail
directamente. Existen varias versiones de sendmail
por ahí, pero todas admiten sendmail -t
enviar un correo de la manera más simple, leyendo la lista de destinatarios del correo. (Creo que no todos son compatibles Bcc:
). En la mayoría de los sistemas, sendmail
no está en lo habitual $PATH
, está en /usr/sbin
o /usr/lib
.
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: to@address
Subject: hello
Content-Type: text/html
EOF
fuente
mail
.Con Heirloom mailx, la forma conveniente es
Gracias, Amigo
Probado en Fedora 17, y trabajó
fuente
Deberá agregar un
Content-Type
encabezado a su correo electrónico para que esto suceda.trabajará
fuente
mailx
? Eso podría tener la opción. Si eso no funciona. Si eso no funciona, puede considerar usar mutt, aunque no sé de antemano cuáles son los cambios de la línea de comando para hacerlo.Con heirloom-mailx puede cambiar el programa sendmail a su script de enlace, reemplazar los encabezados allí y luego usar sendmail.
El script que uso (
~/bin/sendmail-mailx-hook
):Este script cambia los valores en el encabezado del correo de la siguiente manera:
Content-Type:
atext/html; charset=utf-8
Content-Transfer-Encoding:
a8bit
(no estoy seguro si esto es realmente necesario).Para enviar un correo electrónico HTML:
Este método es más efectivo que el propuesto por @Gilles porque no crea archivos temporales y simplemente arregla la transmisión sobre la marcha.
fuente
He utilizado los siguientes scripts para suceder
fuente
Para mí, necesitaba especificar una variable como el servidor SMTP, por lo que el comando de correo funcionó de la siguiente manera. Busqué en muchas publicaciones y encontré la propiedad a continuación para convertir el cuerpo en texto / html. Ahora el correo electrónico que recibo está en formato HTML.
Versión Unix: Red Hat Enterprise Linux Server versión 6.6 (Santiago)
Primero. Cree la información necesaria en un script (testSql.sh)
Segundo. Canalice esa secuencia de comandos al comando de correo
Al hacer esto, obtengo la información que se muestra a continuación en el correo electrónico:
Value1 y Value2 según el etiquetado HTML realizado en testSql.sh
fuente
fuente