デコメールのテンプレートについて。
携帯電話でのウェブ利用者の間で使われるHTMLメール・デコメールのテンプレートについて解説します。
- この記事はストリクトなHTMLを志向する方(いわゆるHTML原理主義者)、HTMLメールの撲滅を断固主張する方はお読みにならない方がいいかも知れません。
- 本当は、制作者も見本を作れば良かったのですが、絵を描きたいと言う気力がこのところ全然無いので…。
- 制作者は、モバイルコンテンツ変換スクリプトであるしらぎくモバイルシステム VIでドコモ向けデコメールのテンプレートをKDDI/沖縄セルラー及びソフトバンク向けに変換する機能を実装しました。可能ならこのテンプレート配布機能だけを分離独立させたスクリプトも書きたいものです。制作者に活動出来る時間が残されていれば…。
デコメールとは。
デコメールとは、デコレーションメールの略で、携帯電話向けのHTMLメールの事です。
- 本来、デコメールはエヌ・ティ・ティ・ドコモの商標なのですが、他社もデコ…メールと言う商標を用いているのでそれらの省略形として使っております。
- 蛇足ですが、かつてドコモから503iシリーズが出されたとき、メールクライアントのバクに依りメール本文にタグを記述する事が可能だった事があり、タグメールなどと呼ばれておりましたが、単なるバグだったためすぐに使えなくされてしまいました。しかし、今日のデコメールは正式に仕様化されたものです。
メールと画像などを組合わせ、画像に合わせた背景色などを指定する事で表現力のあるメールを実現すると言うものです。
- これが好ましい発想であるかどうかは、この際論じない事にしましょう…。確かに世の中にはHTMLメールをそれこそ親の仇か蛇蝎のように憎しむ者もいますので…。
デコメールを実際に利用するには、テンプレートをダウンロードしてそれに本文を記述すると言うのが最も手っ取り早いようです。
このため、企業などには広告入りのテンプレートを配布しているところもあります。
ドコモはデコメールテンプレートの制作ツールも配布しており(ウィンドウズのみ)、比較的敷居は低くなっておりますが、他社ではそのようなサーヴィスはしていないようです。
- ウィルコムに至っては仕様を公式サイト以外には非公開としており、このためウィルコムの利用者に対してデコラティブメール(ウィルコムでの商標)のテンプレートを提供する事は不可能となっております。
ここでは、仕様が明らかになっているドコモ, KDDI/沖縄セルラー及びソフトバンクのデコメールテンプレートについて解説します。
より多くの端末で使えるテンプレート。
ドコモのデコメールは端末に依りヴァージョンが決められております。
このため、少し前の端末だと折角のテンプレートが使えないと言う事もあり得ます。
- 初期のデコメール対応端末(900iシリーズ)はまだまだ現役かと思われますので…。
このため、以下の条件に従っておけば、対応端末に漏れなく対応出来るでしょう。
- ここでは、変換スクリプトなどを用いて他社向けにも配布出来るようにする事を想定したものとします。
- ファイル容量
- 1万バイト以内とします。
- 画像の形式
- GIF画像またはJPEG画像とし、最大五枚までとします。
- PNG画像は、ドコモ及びKDDI/沖縄セルラーでは非対応です。
- ドコモでは最低でも十枚までの画像が使えますが、KDDI/沖縄セルラーでは最小の規格では五枚までとなっております。
- 最近の端末ではフラッシュも使えますが、フラッシュは初期の端末では非対応です。
- 画像の制限
- 画像は常に単一のブロックレヴェル要素とし、前後で改行するようにします。
- これは、ドコモのデコメール・ヴァージョン 1.0では画像の前後で必ず改行される事に依ります。
ファイルのフォーマット。
デコメールテンプレートのファイルフォーマットは以下のようになります。
用語の説明。
以下、ファイルの形式の説明で出てくる言葉を解説しておきます。
- 境界文字列
- 境界文字列とは、HTML部分, 各画像・フラッシュ部分を分別するための境界となる文字列で、
--[境界文字列] と同じ内容の行が現われないように定められます。- 実際のところ、プログラムは問題なく適切な文字列を定める事が可能です。
- 画像等の形式
- 画像等の形式とは、画像またはフラッシュの形式を表すMIMEタイプの事です。
デコメールでは以下のものが指定出来ます。
image/gif- GIF画像。静止GIF画像かアニメーションGIF画像かは問いません。
image/jpeg- JPEG画像。
application/x-shockwave-flash- フラッシュ。
- 画像等のファイル名
- 画像等のファイル名は、デコメールでは特に意味は持ちません。
主にローカルで付けたファイル名がそのまま使われる事となります。
- 画像等に与えたID
- 画像等に与えたIDとは、実際に画像またはフラッシュを埋め込む
<img>要素及び<object>要素にて、それぞれsrc属性, data属性の値となるURIに用いられる文字列です。 - 画像等のデータ
- 画像等のデータとは、画像またはフラッシュの実際のデータです。
メールではバイナリデータをそのまま送受信する事が出来ないため、Base64と呼ばれる、64種の英数字記号を用いたエンコーディングを用いてデータをテキスト化します。
ドコモのデコメールの場合。
ドコモのデコメール用のテンプレートの場合、以下の形式となります。
Decomail-TemplateMIME-Version: 1.0Content-Type: multipart/related; boundary="[境界文字列]"--[境界文字列]Content-Type: text/html; charset=Shift_JISContent-Transfer-Encoding: 8bit<html>[HTML部分]</html>--[境界文字列]Content-Type:[一枚目の画像等の形式]; name="[一枚目の画像等のファイル名]"Content-Transfer-Encoding: base64Content-ID:<[一枚目の画像等に与えたID]> [一枚目の画像等のデータ]--[境界文字列]Content-Type:[二枚目の画像等の形式]; name="[二枚目の画像等のファイル名]"Content-Transfer-Encoding: base64Content-ID:<[二枚目の画像等に与えたID]> [二枚目の画像等のデータ] …--[境界文字列]--
ドコモのデコメールテンプレートの配布方法。
通常のリソース同様、<a>要素でリンクするだけです。
<ul><li><a href="Horikita_Maki.dmt" type="application/x-decomail-template">テンプレート</a></li></ul>
KDDI/沖縄セルラーのデコレーションメールの場合。
KDDI/沖縄セルラーのデコレーションメール用のテンプレートの場合、以下の形式となります。
KDDI_HTML_MAIL_1_0MIME-Version: 1.0Content-Type: multipart/mixed; boundary=[境界文字列]"--[境界文字列]Content-Type: text/html; charset=ISO-2022-JPContent-Transfer-Encoding: 7bit<html>[HTML部分]</html>--[境界文字列]Content-Type:[一枚目の画像等の形式]; name="[一枚目の画像等のファイル名]"Content-Transfer-Encoding: base64Content-ID:<[一枚目の画像等に与えたID ※]> [一枚目の画像等のデータ]--[境界文字列]Content-Type:[二枚目の画像等の形式]; name="[二枚目の画像等のファイル名]"Content-Transfer-Encoding: base64Content-ID:<[二枚目の画像等に与えたID ※]> [二枚目の画像等のデータ] …--[境界文字列]--
KDDI/沖縄セルラーのデコレーションメールの場合の注意事項。
KDDI/沖縄セルラーのデコレーションメール用テンプレートを作るうえでの注意事項は以下の通りです。
- フラッシュを入れる場合
- KDDI/沖縄セルラーでは、デコレーションメールのヴァージョンをテンプレートのヘッダで指定します。
従いまして、フラッシュが含まれる場合はヘッダの一行目を以下のように書き直してください。
KDDI_HTML_MAIL_3_0
- HTMLの記述
- HTMLは、ISO-2022-JP(JISコード)で記述します。
このため、HTML部分のヘッダがドコモ用などと異なります。
- 画像等に与えるID
- 画像等に与えるIDについては、以下の形式を遵守してください。
img_cid_[三桁の半角数字]
具体的には、
- 一番目の画像には
img_cid_000, - 二番目の画像には
img_cid_001, - …
とします。
- この形式に従わないとエラーとなります。
KDDI/沖縄セルラーのデコレーションメールテンプレートの配布方法。
配布するには、<object>要素を入れた配布ページを作成し、そこにリンクすると言う形を採ります。
フラッシュを含まない場合。
フラッシュを含まないテンプレートの場合には、以下のページを作って配布します。
<?xml version="1.0" encoding="shift_jis"?><!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML Mobile 1.0//EN" "http://www.openwave.com/DTD/xhtml-mobile10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"><head><meta http-equiv="content-type" content="text/html; charset=shift_jis"/><title>デコレーションメール用テンプレート</title></head><body><h1>テンプレート</h1><ul><li><object data="[テンプレートファイル名]" type="application/x-kddi-htmlmail" standby="[受信中のメッセージ]"><param name="disposition" value="dev1htm" valuetype="data"/><param name="title" value="[テンプレート名]" valuetype="data"/></object></li></ul></body></html>
- [テンプレートファイル名]は実際に読み込むデコレーションメールテンプレートのファイル名を
- [受信中のメッセージ]は読み込んでいる間に表示されるメッセージ(お待ちください など)を
- [テンプレート名]は実際に読み込むデコレーションメールテンプレートの名前を
それぞれ指定します。
また、<param>要素に於いて、name="disposition" 属性と value="dev1htm" が書かれておりますが、これに依りファイルの種類を判別するようですので正確に書きましょう。
具体的には以下のようになります。
<object data="Horikita_Maki.khm" type="application/x-kddi-htmlmail" standby="お待ちください…"><param name="disposition" value="dev1htm" valuetype="data"/><param name="title" value="堀北真希" valuetype="data"/></object>
フラッシュを含む場合。
フラッシュを含むテンプレートの場合は、ヴァージョンが異なるため、記述が若干異なります。
<?xml version="1.0" encoding="shift_jis"?><!DOCTYPE html PUBLIC "-//OPENWAVE//DTD XHTML Mobile 1.0//EN" "http://www.openwave.com/DTD/xhtml-mobile10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"><head><meta http-equiv="content-type" content="text/html; charset=shift_jis"/><title>デコレーションメール用テンプレート</title></head><body><h1>テンプレート</h1><ul><li><object data="[テンプレートファイル名]" type="application/x-kddi-htmlmail" standby="[受信中のメッセージ]"><param name="disposition" value="dev2htm" valuetype="data"/><param name="title" value="[テンプレート名]" valuetype="data"/></object></li></ul></body></html>
大筋はフラッシュを含まない場合と同じですが、<param>要素に於いて、name="disposition" 属性と value="dev2htm" が異なっております。
ソフトバンクのデコレメールの場合。
ソフトバンクのデコレメール用のテンプレートの場合、以下の形式となります。
HTMLMail-Template-Version: 1.0HTMLMail-Template-Title:[テンプレート名]MIME-Version: 1.0Content-Type: multipart/related; boundary="[境界文字列]"--[境界文字列]Content-Type: text/html; charset=Shift_JISContent-Transfer-Encoding: 8bit<html>[HTML部分]</html>--[境界文字列]Content-Type:[一枚目の画像等の形式]; name="[一枚目の画像等のファイル名]"Content-Transfer-Encoding: base64Content-ID:<[一枚目の画像等に与えたID]> [一枚目の画像等のデータ]--[境界文字列]Content-Type:[二枚目の画像等の形式]; name="[二枚目の画像等のファイル名]"Content-Transfer-Encoding: base64Content-ID:<[二枚目の画像等に与えたID]> [二枚目の画像等のデータ] …--[境界文字列]--
ソフトバンクのデコレメールテンプレートの配布方法。
通常のリソース同様、<a>要素でリンクするだけです。
<ul><li><a href="Horikita_Maki.hmt" type="application/x-htmlmail-template">テンプレート</a></li></ul>
実際に複数会社向けに配布するには。
実際にマルティキャリアにしようとした場合、
- ファイルのフォーマットが三社で異なっている事
- KDDI/沖縄セルラーとその他二社では配布方法が異なる事
がネックとなります。
考えられる方法は以下のようなものでしょう。
- 以下、ドコモ用のデコメールテンプレートを他社向けに変換すると言う仮定で話しをすすめております。
- 制作者は、モバイルコンテンツ変換スクリプトであるしらぎくモバイルシステム VIで実際に以下の機能を実装しました。可能ならこのテンプレート配布機能だけを分離独立させたスクリプトも書きたいものです。
- HTML部分
- KDDI/沖縄セルラーに対しては、
- <img>要素のsrc属性値や<object>要素のdata属性値に書かれているURIを
cid:img_cid_nnnと言う形に変換する(当然、元のIDとの対照表を作成した上で変換します)。 - エンコーディングをシフトJISコードからISO-2022-JP(JISコード)に変換します。
- <img>要素のsrc属性値や<object>要素のdata属性値に書かれているURIを
- 画像等の部分
- KDDI/沖縄セルラーに対しては、IDを
cid:img_cid_nnnと言う形に変換します。 - ファイル全体
- ドコモ以外には、それぞれのフォーマットに合わせて再編します。
- 配布
-
- KDDI/沖縄セルラー以外は、そのまま配信します。
- KDDI/沖縄セルラーは、配布用のHTMLを出力し、そこから変換したテンプレートを読み込むようにします。