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" fred@example.com

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" fred@example.com

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 address@example.com < 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


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.

    rcpt=joe@example.com
    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"
    
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.