mail - html title attribute style
Mailx enviar mensaje html (6)
Esta pregunta ya tiene una respuesta aquí:
Quiero enviar un mensaje html con Mailx. Cuando intento el siguiente comando
mailx -s "Subject" [email protected] < email.html
Obtengo el contenido de email.html en texto plano. En el mensaje, el encabezado Content-Type se establece en text / plain. La opción -a intenta enviar un archivo, así que no descubrí cómo modificar el encabezado. Esta answer casi funcionó, establece bien el Tipo de contenido en texto / html pero no sustituye al Tipo de contenido predeterminado que es texto / sin formato.
mailx -s "$(echo -e "This is the subject/nContent-Type: text/html")" [email protected] < email.html
da este resultado:
From: [email protected]
To: [email protected]
Subject: This is the subject
Content-Type: text/html
Message-ID: <538d7b66.Xs0x9HsxnJKUFWuI%[email protected]>
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
boundary="=_538d7b66.z5gaIQnlwb1f/AOkuuC+GwF1evCaG/XIHQMbMMxbY6satTjK"
This is a multi-part message in MIME format.
--=_538d7b66.z5gaIQnlwb1f/AOkuuC+GwF1evCaG/XIHQMbMMxbY6satTjK
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
<html>
<body>
<p>Helo wolrd</p>
</body>
</html>
PD: También lo intenté con uuencode. Cuando intento mostrar el mensaje en el correo web, aparece una página en blanco ...
Bueno, el correo "-a" y mailx en Centos7 es "adjuntar archivo" no "añadir encabezado". Mi camino más corto hacia una solución en Centos7 desde aquí: stackexchange.com
Básicamente:
yum install mutt
mutt -e ''set content_type=text/html'' -s ''My subject'' [email protected] < msg.html
Es fácil, si su comando mailx
admite la opción -a
(agregar encabezado):
$ mailx -a ''Content-Type: text/html'' -s "my subject" [email protected] < email.html
Si no es así, intente usar sendmail
:
# create a header file
$ cat mailheader
To: [email protected]
Subject: my subject
Content-Type: text/html
# send
$ cat mailheader email.html | sendmail -t
Hay muchas versiones diferentes de correo alrededor. Cuando va más allá del correo, tema a 1 @ dirección1 a 2 @ dirección2
Con algunas implementaciones de mailx, por ejemplo, desde mailutils en Ubuntu o bsd-mailx de Debian, es fácil, porque hay una opción para eso.
mailx -a ''Content-Type: text/html'' -s "Subject" to@address <test.html
Con el mailx de Heirloom, no hay una forma 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 mailx POSIX general, no sé cómo llegar a los encabezados.
Si va a utilizar cualquier correo o mailx, tenga en cuenta que
Esto no es portátil incluso dentro de una distribución de Linux dada. Por ejemplo, tanto Ubuntu como Debian tienen varias alternativas para mail y mailx.
Al redactar un mensaje, mail y mailx trata las líneas que comienzan con ~ como comandos. Si canaliza texto en el correo, debe organizar que este texto no contenga líneas que comiencen con ~.
Si va a instalar el 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 opción -H, pero no con Content-Type, que debe configurarse a través de una opción mutt.
mutt -e ''set content_type=text/html'' -s ''hello'' ''to@address'' <test.html
O puedes invocar sendmail directamente. Existen varias versiones de sendmail, pero todas son compatibles con sendmail -t para enviar un correo de la manera más simple, leyendo la lista de destinatarios del correo. (Creo que no todos admiten Bcc :.) En la mayoría de los sistemas, sendmail no está en el 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
Si usa AIX, intente esto. Esto adjuntará un archivo de texto e incluirá un cuerpo HTML. Si esto no funciona, capture el resultado en / var / spool / mqueue
#!/usr/bin/kWh
if (( $# < 1 ))
then
echo "/n/tSyntax: $(basename) MAILTO SUBJECT BODY.html ATTACH.txt "
echo "/tmailzatt"
exit
fi
export MAILTO=${[email protected]}
MAILFROM=$(whoami)
SUBJECT=${2-"mailzatt"}
export BODY=${3-/apps/bin/attch.txt}
export ATTACH=${4-/apps/bin/attch.txt}
export HST=$(hostname)
#export BODY="/wrk/stocksum/report.html"
#export ATTACH="/wrk/stocksum/Report.txt"
#export MAILPART=`uuidgen` ## Generates Unique ID
#export MAILPART_BODY=`uuidgen` ## Generates Unique ID
export MAILPART="==".$(date +%d%S)."===" ## Generates Unique ID
export MAILPART_BODY="==".$(date +%d%Sbody)."===" ## Generates Unique ID
(
echo "To: $MAILTO"
echo "From: mailmate@$HST "
echo "Subject: $SUBJECT"
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/mixed; boundary=/"$MAILPART/""
echo ""
echo "--$MAILPART"
echo "Content-Type: multipart/alternative; boundary=/"$MAILPART_BODY/""
echo ""
echo ""
echo "--$MAILPART_BODY"
echo "Content-Type: text/html"
echo "Content-Disposition: inline"
cat $BODY
echo ""
echo "--$MAILPART_BODY--"
echo ""
echo "--$MAILPART"
echo "Content-Type: text/plain"
echo "Content-Disposition: attachment; filename=/"$(basename $ATTACH)/""
echo ""
cat $ATTACH
echo ""
echo "--${MAILPART}--"
) | /usr/sbin/sendmail -t
Usé con éxito lo siguiente en Arch Linux (donde se usa la bandera -a
para adjuntos) durante varios años:
mailx -s "The Subject $( echo -e "/nContent-Type: text/html" [email protected] < email.html
Esto adjuntó el encabezado Content-Type al encabezado del asunto, que funcionó muy bien hasta una actualización reciente. Ahora la nueva línea se filtra fuera del tema -s
. Presumiblemente, esto se hizo para mejorar la seguridad.
En lugar de confiar en hackear la línea de asunto, ahora uso una subshell de bash:
(
echo -e "Content-Type: text/html/n"
cat mail.html
) | mail -s "The Subject" -t [email protected]
Y como en realidad solo estamos usando la bandera de asunto de mailx
, parece que no hay razón para no cambiar a sendmail
como lo sugiere @dogbane:
(
echo "To: [email protected]"
echo "Subject: The Subject"
echo "Content-Type: text/html"
echo
cat mail.html
) | sendmail -t
El uso de subshells de bash evita tener que crear un archivo temporal.
EMAILCC=" -c [email protected],[email protected]"
TURNO_EMAIL="[email protected]"
mailx $EMAILCC -s "$(echo "Status: Control Aplicactivo /nContent-Type: text/html")" $TURNO_EMAIL < tmp.tmp