GNU/Linux >> Linux Esercitazione >  >> Linux

Invio di posta HTML utilizzando uno script di shell

Per prima cosa devi comporre il messaggio. Il minimo indispensabile è composto da queste due intestazioni:

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

... e il corpo del messaggio appropriato:

<!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 volta ottenuto, puoi passare le informazioni appropriate al comando mail:

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]

Questo è un esempio troppo semplificato, dal momento che devi anche prenderti cura di set di caratteri, codifiche, lunghezza massima della riga... Ma questa è fondamentalmente l'idea.

In alternativa, puoi scrivere il tuo script in Perl o PHP invece che in semplice shell.

Aggiorna

Uno script di shell è fondamentalmente un file di testo con terminazioni di riga Unix che inizia con una riga chiamata shebang che dice alla shell a quale interprete deve passare il file, segue alcuni comandi nella lingua che l'interprete comprende e ha il permesso di esecuzione (in Unix questo è un attributo file). Ad esempio, supponiamo che tu salvi quanto segue come hello-world :

#!/bin/sh

echo Hello, world!

Quindi assegni il permesso di esecuzione:

chmod +x hello-world

E puoi finalmente eseguirlo:

./hello-world

Qualunque cosa, questo non è in qualche modo correlato alla domanda originale. Dovresti familiarizzare con gli script di shell di base prima di eseguire attività avanzate con esso. Ecco un paio di link su bash , una shell popolare:

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

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


Finora ho trovato due modi rapidi in cmd linux

  1. Usa la posta della vecchia scuola

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

  1. Usa mutt

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


I tag includono "sendmail", quindi ecco una soluzione che lo utilizza:

(
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 wrapper per sendmail può facilitare questo lavoro, per esempio, mutt:

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

Linux
  1. Comportamento imprevisto di uno script di shell?

  2. Script di shell con funzione e parametro come variabili?

  3. Lo script della shell si blocca sul comando di posta?

  4. Modifica lo script della shell mentre è in esecuzione

  5. Script bash:utilizzo del comando script da uno script bash per la registrazione di una sessione

Comprendere facilmente i comandi della shell utilizzando lo script "Explain Shell" in Linux

Come creare un utente su un'istanza EC2 Linux su AWS e aggiungervi una chiave pubblica utilizzando uno script di shell

Libreria di output di script di shell colorata

Ottieni l'indirizzo MAC usando lo script della shell

Calcolo della percentuale arrotondata in Shell Script senza utilizzare bc

Itera sulla variabile $ PATH usando lo script di shell