Wie kann ich E-Mail-Nachrichteninhalte als HTML anstatt als Text senden?

3

Derzeit sende ich eine E-Mail vom Linux-Befehl wie folgt:

echo "Here is the link: file:///S:/some_doc.html" | mail -s "Here is some_doc.html" [email protected]

In einigen E-Mail-Clients wird "file: /// S: /some_doc.html" im Nachrichtentext zu einem Link, auf den der Benutzer klicken kann, in anderen jedoch Clients wird als einfacher Text dargestellt, bei dem der Benutzer die Zeichenfolge kopieren und in einen Webbrowser einfügen muss. Wie ändere ich den Befehl so, dass die Nachricht HTML ist, sodass der E-Mail-Client weiß, wie mit dem Link umgegangen wird?

Dadurch wird der Link in die Nachricht eingefügt, sie wird jedoch weiterhin wie Text und nicht wie HTML behandelt:

echo "Here is the link to: <a href='file:///S:/some_doc.html'>some_doc.html</a>" | mail -s "Here is some_doc.html" [email protected]
CW Holeman II
quelle
Warum sollte ein Super User eine einwandfrei gültige Frage mit einer akzeptierte Antwort auf einen anderen SE-Standort verlegt werden?
BinaryMisfit
Es ist eine Linux-spezifische Frage, die, da es jetzt eine SE-Site für Linux gibt, der natürliche Ort wäre, an den sich jemand wenden würde, der diese Frage stellt. Wenn sich die Frage eher auf die Unterscheidung zwischen Text und HTML in E-Mails als auf einen "Linux-Befehl" bezieht, dann ist dieser hier besser zu finden.
CW Holeman II

Antworten:

5

Ich habe es gesehen:

mail -a "Content-type: text/html;" -s Test [email protected] < mail_html.html

Ich hätte erwähnen sollen, dass ich dies auf Ubuntu Server 10.04_x64 mit getestet habe Gnu Mail Utils - & gt; Postfix

Nathaniel Bannister
quelle
2
Meine mail hat kein -a, könntest du darüber nachdenken mutt, was unterstützt es?
Rich Homolka
Besser wäre es, ein MIME zu erstellen multipart/alternative Nachricht mit text/plain und text/html Teile, die identischen Text enthalten, anstatt nur HTML direkt zu senden.
grawity
1
@Rich: Es ist da in mail von GNU Mailutils . Sie haben wahrscheinlich die traditionellere BSD mailx . (In acht nehmen: mail von Erbstück mailx und mutt benutzen -a für etwas ganz anderes - eine Datei anhängen.)
grawity
1

Botschaft:

  • Am besten erstellen Sie ein MIME Content-Type: multipart/alternative Nachricht mit text/plain und text/html Teile.

  • Für die Faulen Content-Type: text/html (mit HTML direkt im Nachrichtentext) reicht aus.

    ... aber denk dran sind E-Mail-Clients, die kein HTML anzeigen können.

  • Was auch immer Sie wählen, füge hinzu ein charset=utf-8 (wie in Content-Type: text/html; charset=utf-8 ) in den Typenkopf. (Jeder Nicht - Unicode - Zeichensatz (außer vielleicht us-ascii und iso-8859-1 ) ist böse.)

Senden:

  • Schlug Nathaniel vor mail -a "Content-Type: text/html", aber das funktioniert nur mit GNU Mailutils.

  • Ein zuverlässigerer Weg ist die Weiterleitung der Nachricht sendmail, aber Sie müssen alle Header selbst erstellen.

    [email protected]
    echo -e "From: <$USER>\nTo: <$rcpt>\nDate: $(date "+%a, %d %b %Y %H:%M:%S %z")\nContent-Type: text/html; charset=utf-8\n\n<!DOCTYPE html>\n<p>Here is the link to: <a href=\"file:///S:/some_doc.html\">some_doc.html</a>" | sendmail -i "$rcpt"
    
grawity
quelle