web-dev-qa-db-ja.com

電子メールメッセージのコンテンツをプレーンテキストではなくHTMLとして送信するにはどうすればよいですか?

現在、Linuxコマンドから次のようなメールを送信しています。

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

一部の電子メールクライアントでは、メッセージ本文の「file:/// S:/some_doc.html」がユーザーがクリックできるリンクになりますが、他のクライアントでは、文字列をコピーして貼り付ける必要があるプレーンテキストとして表示されます。 Webブラウザに。メールクライアントがリンクの処理方法を認識できるように、コマンドを変更してメッセージをHTMLにする方法を教えてください。

これによりメッセージへのリンクが取得されますが、HTMLではなくテキストのように扱われます。

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]
3
CW Holeman II

私はそれが行われるのを見ました:

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

私はこれをUbuntuServer 10.04_x64で Gnu Mail Utils -> Postfix でテストしました。

5

メッセージ:

  • 最良の方法は、Content-Type: multipart/alternativetext/plainの部分を含むMIMEtext/htmlメッセージを作成することです。

  • 怠惰な場合は、Content-Type: text/html(メッセージ本文にHTMLを直接挿入)で十分です。

    ...ただし、HTMLを表示できないメールクライアントがあることを忘れないでください。

  • どちらを選択しても、charset=utf-8Content-Type: text/html; charset=utf-8のように)をタイプヘッダーに追加します。 (Unicode以外の文字セット(おそらくus-asciiiso-8859-1を除く)はすべて悪です。)

送信:

  • Nathanielはmail -a "Content-Type: text/html"を提案しましたが、これはGNU Mailutilsでのみ機能します。

  • より信頼性の高い方法は、メッセージsendmailをパイプすることですが、すべてのヘッダーを自分で作成する必要があります。

    [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"
    
1
user1686