11.9.1 電子メールの書式

私たちが普段使う電子メールの書式を説明します.

電子メールの書式

世界中の人がお互いに電子メールをやりとりできるようになるには,各々の人が統一された書式を使うことが不可欠です.そこで externalRFC5322 (Internet Message Format) という技術文書によって電子メールの仕様が定められており,私たちが送受信するメールは全て RFC5322 に準拠しています.
RFC5322 ではメールメッセージを

  • 主にプログラムがメールを操作するために使う部分であるヘッダ
  • メールの本文にあたるメッセージ

の 2 つに分け,それぞれの仕様を規定しています.

ヘッダ

実際にメールのヘッダを見てみましょう. Apple Mail では 表示メッセージすべてのヘッダ とメニューをたどるとヘッダを見られます.意味が分かる文字列と分からない文字列が並んでいるのではないでしょうか?
ヘッダ情報の例
ヘッダの「差出人」や「件名」などの項目名を フィールド と言い,右に書かれるフィールドの値をフィールドボディと言います.まず最初に気付くのは,ヘッダではフィールド名とフィールドボディがコロンで区切られて並ぶということです.どんなヘッダも,必ずこの規則に従っています.
あとはヘッダの各フィールドが読めればヘッダの意味は分かったも当然です.そこでいくつか重要なものに絞って,フィールドの意味を説明します.

From
メールメッセージの作成者の名前を表します.
Date
メールメッセージが作成された日時を表します.
Reply-to
メールメッセージに対する返信を送るべきメールアドレスを表します.
Received
この電子メールが配送される際に中継したメールサーバーの名前が記されています.from の直後に来るのが送信したメールサーバーのドメイン名と IP アドレスで,by の直後に来るのがメールサーバーの名前です.一般に,電子メールは複数のメールサーバーを中継して送られるため,Received フィールドは複数個あります.
Mime-Version
電子メールのメッセージは,下で説明する MIME という規格で書かれています.この部分には「どのバージョンの MIME を使ったか」という情報が書かれますが,現在のところ MIME はバージョン 1 しかないので,常にフィールドボディは 1.0 という値になります.
Content-Type
メッセージがどのような形式で書かれているかを表します.今の場合はただのテキストメールが送られたので text/plain になっていますが,HTML メールを送ると text/html となります.また charset の後ろには,メッセージの文字コードが書かれています.
X-***
X から始まるフィールド名は RFC5322 で規定されたものではなく,メールクライアントやメールサーバーが独自に付け加えたものです.独自仕様ですのでどういう使われ方をするか一概には言えませんが,上の例では送信者が使ったメールクライアント名などが入っているようです.

MIME (Multipurpose Internet Mail Extensions)

さて RFC5322 という文書では,メールメッセージで送受信される文字として US-ASCII という文字コードしか許していません.しかし US-ASCII には欧米圏以外で用いられる文字は含まれませんし,メールに添付されるファイルももちろん文字ではありません.そこで US-ASCII で記述される文字以外のものを送るために用いられるのが MIME という規格です.一言で言うと MIME とは「色々なデータを US-ASCII の文字列に変換する規則」です.US-ASCII 文字列しか送れないなら,他の物は全て US-ASCII 文字列に変えてしまえばよい,というわけです.
また私たちが添付ファイルつきのメールを送る場合,1 通のメールメッセージに本文というテキスト形式のデータと添付ファイルという (一般には) テキスト形式ではないデータが混在することになります.MIME では何種類ものデータを同時に送るための方法も規定しているので,そのおかげで私たちは添付ファイルを送れるようになっています.