GNU/Linux >> Tutoriales Linux >  >> Linux

Envío de correo HTML usando un script de shell

Primero necesitas redactar el mensaje. El mínimo indispensable se compone de estos dos encabezados:

MIME-Version: 1.0
Content-Type: text/html

... y el cuerpo del mensaje apropiado:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
</head>
<body>

<p>Hello, world!</p>

</body>
</html>

Una vez que lo tenga, puede pasar la información apropiada al comando de correo:

body = '...'

echo $body | mail \
-a "From: [email protected]" \
-a "MIME-Version: 1.0" \
-a "Content-Type: text/html" \
-s "This is the subject" \
[email protected]

Este es un ejemplo demasiado simplificado, ya que también debe cuidar los juegos de caracteres, las codificaciones, la longitud máxima de línea... Pero esta es básicamente la idea.

Alternativamente, puede escribir su secuencia de comandos en Perl o PHP en lugar de shell simple.

Actualizar

Un script de shell es básicamente un archivo de texto con terminaciones de línea de Unix que comienza con una línea llamada shebang que le dice al shell a qué intérprete debe pasar el archivo, sigue algunos comandos en el idioma que el intérprete entiende y tiene permiso de ejecución (en Unix eso es un atributo de archivo). Por ejemplo, supongamos que guarda lo siguiente como hello-world :

#!/bin/sh

echo Hello, world!

Luego asigna permiso de ejecución:

chmod +x hello-world

Y finalmente puedes ejecutarlo:

./hello-world

Lo que sea, esto no tiene relación con la pregunta original. Debe familiarizarse con las secuencias de comandos de shell básicas antes de realizar tareas avanzadas con ellas. Aquí tienes un par de enlaces sobre bash , un shell popular:

http://www.gnu.org/software/bash/manual/html_node/index.html

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html


Hasta ahora he encontrado dos formas rápidas en cmd linux

  1. Usar el correo de la vieja escuela

mail -s "$(echo -e "This is Subject\nContent-Type: text/html")" [email protected] < mytest.html

  1. Usar mut

mutt -e "my_hdr Content-Type: text/html" [email protected] -s "subject" < mytest.html


Las etiquetas incluyen 'sendmail', así que aquí hay una solución que usa eso:

(
echo "From: [email protected] "
echo "To: [email protected] "
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/alternative; " 
echo ' boundary="some.unique.value.ABC123/server.xyz.com"' 
echo "Subject: Test HTML e-mail." 
echo "" 
echo "This is a MIME-encapsulated message" 
echo "" 
echo "--some.unique.value.ABC123/server.xyz.com" 
echo "Content-Type: text/html" 
echo "" 
echo "<html> 
<head>
<title>HTML E-mail</title>
</head>
<body>
<a href='http://www.google.com'>Click Here</a>
</body>
</html>"
echo "------some.unique.value.ABC123/server.xyz.com--"
) | sendmail -t

Un contenedor para sendmail puede facilitar este trabajo, por ejemplo, mutt:

mutt -e 'set content_type="text/html"' [email protected] -s "subject" <  message.html

Linux
  1. ¿La secuencia de comandos de Shell se bloquea en el comando de correo?

  2. Usando el comando passwd desde dentro de un script de shell

  3. Edite el script de shell mientras se está ejecutando

  4. ¿Cómo insertar una nueva línea en el script de shell de Linux?

  5. Obtenga la dirección MAC usando un script de shell

Comprender fácilmente los comandos de Shell usando el script "Explain Shell" en Linux

Cómo crear un usuario en una instancia EC2 de Linux en AWS y agregarle una clave pública mediante un script de shell

¿Es posible crear carpetas recursivamente usando un script de shell?

Conexión a WiFi usando adb shell

Biblioteca de salida de scripts de shell de colores

Uso de módem para enviar grabaciones de voz