mail -s "subject" [email protected] <test.html
funktioniert, aber nur für Nur-Text-E-Mails.
Was ist der richtige Weg, um HTML-E-Mails mit dem Linux-Befehl zu senden mail
?
quelle
mail -s "subject" [email protected] <test.html
funktioniert, aber nur für Nur-Text-E-Mails.
Was ist der richtige Weg, um HTML-E-Mails mit dem Linux-Befehl zu senden mail
?
Es gibt viele verschiedene Versionen von mail
. Wenn Sie über das hinausgehen mail -s subject to1@address1 to2@address2 <body
(zum Senden, das ist alles POSIX Garantien - und auch -s
nicht existieren in den alten Tagen ), sie neigen dazu , Optionen unterschiedliche Befehlszeile zu haben. Das Hinzufügen eines zusätzlichen Headers ist nicht immer einfach.
Bei einigen mailx
Implementierungen, z. B. von mailutils
Ubuntu oder Debianbsd-mailx
, ist es einfach, weil es dafür eine Option gibt.
mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
Mit dem Erbstück mailx
gibt es keinen bequemen Weg. Eine Möglichkeit, beliebige Überschriften einzufügen, besteht darin, editheaders=1
einen externen Editor (der ein Skript sein kann) festzulegen und zu verwenden.
## 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"
Mit einem allgemeinen POSIXmailx
kann ich nicht an Überschriften gelangen.
Wenn Sie eines mail
oder verwenden möchten mailx
, denken Sie daran
mail
und mailx
.mail
und mailx
behandelt Zeilen, die mit beginnen, ~
als Befehle. Wenn Sie Text einfügen mail
, müssen Sie dafür sorgen, dass dieser Text keine Zeilen enthält, die mit beginnen ~
.Wenn Sie sowieso Software installieren, dann kann man auch etwas berechenbarer als installieren mail
/ Mail
/ mailx
. Zum Beispiel Mutt . Mit Mutt können Sie die meisten Header in der Eingabe mit der -H
Option versehen, nicht jedochContent-Type
, die über eine Mutt-Option festgelegt werden muss.
mutt -e 'set content_type=text/html' -s 'hello' 'to@address' <test.html
Oder Sie können sendmail
direkt aufrufen . Es gibt verschiedene Versionen von sendmail
, aber alle unterstützen sendmail -t
das Senden einer E-Mail auf einfachste Weise und das Lesen der Empfängerliste aus der E-Mail. (Ich denke, sie werden nicht alle unterstützt Bcc:
.) Auf den meisten Systemen sendmail
ist es nicht das Übliche $PATH
, sondern das In- /usr/sbin
oder /usr/lib
.
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: to@address
Subject: hello
Content-Type: text/html
EOF
quelle
mail
.Mit dem Heirloom mailx ist dies ein bequemer Weg
Vielen Dank, Dude hat
auf Fedora 17 getestet und funktioniert
quelle
Sie müssen
Content-Type
Ihrer E-Mail einen Header hinzufügen , um dies zu ermöglichen.wird funktionieren
quelle
mailx
? Das könnte die Option haben. Wenn das nicht geht. Wenn das nicht funktioniert, können Sie die Verwendung von mutt in Betracht ziehen, obwohl ich nicht genau weiß, wie die Befehlszeilenoptionen lauten.Mit heirloom-mailx können Sie das sendmail-Programm in Ihr Hook-Skript ändern, die Header dort ersetzen und dann sendmail verwenden.
Das Skript, das ich benutze (
~/bin/sendmail-mailx-hook
):Dieses Skript ändert die Werte im Mail-Header wie folgt:
Content-Type:
zutext/html; charset=utf-8
Content-Transfer-Encoding:
bis8bit
(nicht sicher, ob dies wirklich benötigt wird).So senden Sie eine HTML-E-Mail:
Diese Methode ist effektiver als die von @Gilles vorgeschlagene, da keine temporären Dateien erstellt werden und der Stream nur im laufenden Betrieb repariert wird.
quelle
Ich habe die folgenden Skripte verwendet, um zu geschehen
quelle
Für mich musste ich eine Variable wie den SMTP-Server angeben, damit der E-Mail-Befehl wie folgt funktioniert. Ich suchte in vielen Beiträgen und fand unter Eigenschaft, um den Körper in Text / HTML umzuwandeln. Jetzt ist die E-Mail, die ich erhalte, im HTML-Format.
Unix-Version: Red Hat Enterprise Linux Server Version 6.6 (Santiago)
Zuerst. Erstellen Sie alle erforderlichen Informationen in einem Skript (testSql.sh).
Zweite. Leiten Sie das Skript an den Befehl mail weiter
Auf diese Weise erhalte ich Informationen wie unten in der E-Mail:
Wert1 und Wert2 gemäß der HTML-Kennzeichnung in testSql.sh
quelle
quelle