Tips

LinuxServer 電子メールについてもう一度… データファイルの送信

LinuxServer 電子メールについてもう一度… データファイルの送信

メールは、7ビットのテキストデータ(ASCIIコード)としてしか処理できません。
したがって、バイナリファイルなどのデータをそのまま送ることができません。

[divider]

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
&#9312Content-Type: multipart/mixed;
boundary=7A7E33A6-87B5-428B-AE35-C50404563243
Message-Id:
Date: Tue, 9 Oct 2012 14:40:45 +0900
To: “recipient@recipient.org”
&#9313Content-Transfer-Encoding: 7bit
&#9314Mime-Version: 1.0 (1.0)

ここから本文(ボディ部分)
&#9315–7A7E33A6-87B5-428B-AE35-C50404563243
&#9312Content-Type: text/plain;
charset=iso-2022-jp
&#9313Content-Transfer-Encoding: 7bit

日本語で書いてます。

&#9315–7A7E33A6-87B5-428B-AE35-C50404563243
&#9312Content-Type: image/jpeg;
name=__.JPG
&#9316Content-Disposition: inline;
filename*=iso-2022-jp”%1B%24B%3CL%3F%3F%1B%28B.JPG
&#9313Content-Transfer-Encoding: base64
ここから実際の画像データ
/9j/4Q/+RXhpZgAATU0AKgAAAAgACwEPAAIAAAAGAAAAkgEQAAIAAAAJAAAAmAESAAMAAAABAAEA
AAEaAAUAAAABAAAAogEbAAUAAAABAAAAqgEoAAMAAAABAAIAAAExAAIAAAAENS4xAAEyAAIAAAAU
以下略

——————————-

MIMEヘッダはこのようになってます

&#9312Content-Type:メッセージ内のデータタイプを表します。
          multipart/mixed;はテキストにバイナリファイルが添付された形式を表します。
          boundary=でメッセージ内に格納するテキストやデータの区切りを指定します。
          本文(ボディ部分)中の上に記述されているContent-Type:は
          text/plain;となっており、これはテキストを表します。
          charset=は使用している文字コードを表しており、iso-2022-jpは 日本語文字コードを表します。
          本文(ボディ部分)中の上に記述されているContent-Type:は
          image/jpeg;となっており、これはJPEG画像を表します。

&#9313Content-Transfer-Encoding:メッセージのエンコード方式を表します。
                テキストのエンコードは通常、7bitになります。
                iso-2022-jpは7ビットの文字コードになります。
                本文中で画像データを添付してますが、画像データは
                バイナリになりますので、エンコード方式はbase64が使用されます。

&#9314Mime-Version:MIMEに準拠したメッセージである事を表します。
          現在は1.0のみ規定されています。

&#9315はヘッダ内で記述されたboundaryで指定された区切りが記述されます。

&#9316Content-Disposition:添付ファイルがメッセージのどの位置に置かれているかを表示し、
               filenameで添付ファイルのファイル名を記述します。

メールはこのようにしてMIMEを使用し、データをASCIIに変換することで
ASCII以外のデータをやり取りしています。

Linux認定資格 LPICを取るなら・・

Linux資格 「LPIC Lv1」徹底解説 連載目次

Recent News

Recent Tips

Tag Search