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 un correo electrónico HTML usando el comando de Linux mail? ?
Respuesta aceptada:
Hay muchas versiones diferentes de mail alrededor. Cuando va más allá de mail -s subject [email protected] [email protected] <body (para enviar, eso es todo lo que garantiza POSIX, e incluso -s no existía en los viejos tiempos), tienden a tener diferentes opciones de línea de comandos. Agregar un encabezado adicional no siempre es fácil.
-
Con algo de
mailximplementaciones, p. demailutilsen Ubuntu o Debianbsd-mailx, es fácil, porque hay una opción para eso.mailx -a 'Content-Type: text/html' -s "Subject" [email protected] <test.html -
Con la herencia
mailx, no hay manera conveniente. Una posibilidad de insertar encabezados arbitrarios es establecereditheaders=1y use 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" [email protected] <<EOF ~e . EOF rm -f "$temp_script" -
Con un POSIX general
mailx, no sé cómo acceder a los encabezados.
Si vas a utilizar cualquier mail o mailx , ten en cuenta que
- Esto no es portátil ni siquiera dentro de una determinada distribución de Linux. Por ejemplo, tanto Ubuntu como Debian tienen varias alternativas para
mailymailx. - Al redactar un mensaje,
mailymailxtrata líneas que comienzan con~como comandos. Si canalizas texto amail, debe hacer arreglos para que este texto no contenga líneas que comiencen con~.
Si va a instalar software de todos modos, también podría instalar algo más predecible que mail /Mail /mailx . Por ejemplo, mut. Con Mutt, puede proporcionar la mayoría de los encabezados en la entrada con -H opción, pero no Content-Type , que debe configurarse a través de una opción mutt.
mutt -e 'set content_type=text/html' -s 'hello' '[email protected]' <test.html
O puede invocar sendmail directamente. Hay varias versiones de sendmail por ahí, pero todos admiten sendmail -t para enviar un correo de la forma más sencilla, leyendo la lista de destinatarios del correo. (Creo que no todos son compatibles con Bcc: .) En la mayoría de los sistemas, sendmail no está en el $PATH habitual , está en /usr/sbin o /usr/lib .
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: [email protected]
Subject: hello
Content-Type: text/html
EOF