web-dev-qa-db-ja.com

UNIXからメールにテキストを送信して、テキストがメールの本文に何らかの色で表示されるようにします。

UNIXのファイルにテキストがあります。 mailコマンドを使用してそのファイルをメールに送信します。私が欲しいのはテキストが何らかの色で表示されるメールの本文にあります。メールはWindowsから開きます。どんな助けでも大歓迎です。

4
learner1

コンテンツをHTMLに変換し、メールのヘッダーに次のものが含まれていることを確認する必要があります

Content-Type: text/html; charset=UTF-8

これをどのように行うかは、「メール」コマンドがどのプログラムであるかによって異なり、実際には不可能な場合があります。スクリプトを変更して、代わりに次のような方法でメールをsendmailなどに挿入できます。

echo 'Content-Type: text/html; charset=UTF-8
Subject: My Subject

<html>
<b>Email Header</b>
<br /><br />
<font color="red">This text is red</font>
</html>' | sendmail [email protected]

これはやや大雑把な実装であり、調整しない限りスパムフィルターによってドロップされる可能性が高いことに注意してください。

14
davidgo

Davidgoの良い答えのもう少し背景:

電子メール標準は、色またはフォントのサポートで始まりませんでした。したがって、どんなに頑張っても、受信者がどんな色でも見ることができるという保証はありません。

ただし、ほとんどのクライアントはメールを少し広範に解釈します。リッチテキストまたはWebページを送信した場合は、カラーで表示される可能性があります。または、特定のマークアップが本当に必要な場合は、それを画像として送信する必要があります(すべての欠点はありますが、テキストを選択したり編集したりできないことを意味します)。

Unixライクなプラットフォームからの基本的なメールは次のように送信できます。

sendmail [email protected] < myfile

または、猫が好きな場合、またはパイプから始める場合:

cat myfile | sendmail [email protected]

または、シェルを介したエコーから:

echo 'content here' | sendmail [email protected]

これらはすべて、件名、色、テキストマークアップなしでmyfileのコンテンツを送信します。単純なメールです。基本を理解することから始めるのは良い方法です。


ここで、Davidの回答に対して、テキストをHTMLとして扱うようにメールクライアントに指示する行を追加します( 'Content-Type:text/html)。ほとんどのメールクライアントはそれを喜んで認識します。一部(私がまだ疑わしい電子メールを読むために使用しているElmなど)はそうしません。

また、非常にユーザーフレンドリーな主題を追加します。

最後に、HTMLマークアップを使用します(<HTML></HTML>で始まり、太字のタグとフォント設定で色を設定します。この場合は赤ですが、「color = "」を使用して任意の色を指定できますFF0000 "形式(RGBの場合、この場合は赤、緑、青が最大になります)。

より複雑な可変メールが必要な場合は、シェルスクリプトでファイルにパーツを追加し、最初の方法(sendmail user <input)を使用して最終ファイルをメールで送信できます。


メールはWindowsから開きます。

ここではメールクライアントが重要です。 Thunderbirdは、これをWindowsでもLinuxやBSDでも問題なくレンダリングできると思います。同様に、WindowsとBSDの両方でmuttが失敗することを期待しています。代替テキストを使用してマルチパートメールを設計することは良い考えかもしれません。これについては RFC1341 を参照してください。

7
Hennes