LinuxServer 電子メールについてもう一度… データファイルの送信
メールは、7ビットのテキストデータ(ASCIIコード)としてしか処理できません。
したがって、バイナリファイルなどのデータをそのまま送ることができません。
MIME(マイムと読みます)
そこで登場するのがMIME(Multipurpose Internet Mail Extension)です。
MIMEでは新たなヘッダを用意し、テキストデータ(ASCIIコード)で
表現できない文字(日本語)やバイナリデータ(画像ファイル等)を
テキストデータ(ASCIIコード)に変換する方法が取り決められています。
また、メールは一通の当り1つの本文(ボディ部分)しか扱う事が
できませんでしたが、MIMEでは本文を分割する事により複数の文字や
画像などをメールに付与する事が出来き、この仕組みをマルチパートと呼びます。
再びメールヘッダを見てみましょう。今回は本文(ボディ部分)も入っています。
丸数字に注目して下さい。
——————————–
Delivered-To: recipient@recipient.org
Received: from mail.recipient.org (localhost [127.0.0.1])
by mail.recipient.org (Postfix) with ESMTP id 870EDA0195
for ; Tue, 9 Oct 2012 14:40:52 +0900 (JST)
Received: from smtp.sender.jp (mailsv.sender.jp [IPAddress])
by mail.recipient.org (Postfix) with ESMTP id 643A2A0194
for ; Tue, 9 Oct 2012 14:40:51 +0900 (JST)
Received: from smtp.sender.jp by smtp.sender.jp
with ESMTP
id
for ; Tue, 9 Oct 2012 14:40:51 +0900
Received: from [IPAddress] ([IPAddress] [IPAddress])
by smtp.sender.jp with ESMTP
id
for ; Tue, 9 Oct 2012 14:40:49 +0900
Subject: Test
From: sender@sender.jp
①Content-Type: multipart/mixed;
boundary=7A7E33A6-87B5-428B-AE35-C50404563243
Message-Id:
Date: Tue, 9 Oct 2012 14:40:45 +0900
To: “recipient@recipient.org”
②Content-Transfer-Encoding: 7bit
③Mime-Version: 1.0 (1.0)
ここから本文(ボディ部分)
④–7A7E33A6-87B5-428B-AE35-C50404563243
①Content-Type: text/plain;
charset=iso-2022-jp
②Content-Transfer-Encoding: 7bit
日本語で書いてます。
④–7A7E33A6-87B5-428B-AE35-C50404563243
①Content-Type: image/jpeg;
name=__.JPG
⑤Content-Disposition: inline;
filename*=iso-2022-jp”%1B%24B%3CL%3F%3F%1B%28B.JPG
②Content-Transfer-Encoding: base64
ここから実際の画像データ
/9j/4Q/+RXhpZgAATU0AKgAAAAgACwEPAAIAAAAGAAAAkgEQAAIAAAAJAAAAmAESAAMAAAABAAEA
AAEaAAUAAAABAAAAogEbAAUAAAABAAAAqgEoAAMAAAABAAIAAAExAAIAAAAENS4xAAEyAAIAAAAU
以下略
——————————-
MIMEヘッダはこのようになってます
①Content-Type:メッセージ内のデータタイプを表します。
multipart/mixed;はテキストにバイナリファイルが添付された形式を表します。
boundary=でメッセージ内に格納するテキストやデータの区切りを指定します。
本文(ボディ部分)中の上に記述されているContent-Type:は
text/plain;となっており、これはテキストを表します。
charset=は使用している文字コードを表しており、iso-2022-jpは 日本語文字コードを表します。
本文(ボディ部分)中の上に記述されているContent-Type:は
image/jpeg;となっており、これはJPEG画像を表します。
②Content-Transfer-Encoding:メッセージのエンコード方式を表します。
テキストのエンコードは通常、7bitになります。
iso-2022-jpは7ビットの文字コードになります。
本文中で画像データを添付してますが、画像データは
バイナリになりますので、エンコード方式はbase64が使用されます。
③Mime-Version:MIMEに準拠したメッセージである事を表します。
現在は1.0のみ規定されています。
④はヘッダ内で記述されたboundaryで指定された区切りが記述されます。
⑤Content-Disposition:添付ファイルがメッセージのどの位置に置かれているかを表示し、
filenameで添付ファイルのファイル名を記述します。
メールはこのようにしてMIMEを使用し、データをASCIIに変換することで
ASCII以外のデータをやり取りしています。