GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo enviar un correo electrónico Html usando el comando 'mail' de Linux?

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 mailx implementaciones, p. de mailutils en Ubuntu o Debian bsd-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 establecer editheaders=1 y 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 mail y mailx .
  • Al redactar un mensaje, mail y mailx trata líneas que comienzan con ~ como comandos. Si canalizas texto a mail , 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

Linux
  1. Cómo reiniciar Linux usando la línea de comandos

  2. Enviar correo desde la línea de comandos con un servidor smtp externo en Linux

  3. 9 ejemplos de comandos mail/mailx para enviar correos electrónicos desde la línea de comandos en Linux

  4. ¿Cómo matar un proceso en Linux usando el comando?

  5. Linux/UNIX:Cómo enviar correos con archivos adjuntos usando el comando mailx

Cómo usar Ansible para enviar un correo electrónico usando Gmail

Cómo ejecutar un comando periódicamente en Linux usando Watch

Comando mailx en linux:enviar y recibir correo de Internet

Cómo enviar correo electrónico localmente usando el símbolo del sistema

Enviar correo electrónico en Linux desde la línea de comandos

¿Cómo insertar una nueva línea en el correo electrónico usando el comando de correo de Linux?