HTML+インライン画像
添付画像をインラインで表示させる場合は、下記のようなMIMEフォーマットになります。

先ほどの画像添付と異なるのは、cid でインライン表示する画像を指定しているところです。表示される画像の Content-ID は< >で括られていなければなりません。また、Content-Typeはmultipart/relatedになります。
#!/usr/local/bin/perl use strict; use MIME::Lite; use Jcode; use Path::Class; my $text = 'お誕生日おめでとう'; my $html = <<''; <html> <body> <font color="#FF0000">お誕生日おめでとう</font> <img src="cid:cake"> </body> </html> my $body = MIME::Lite->new( Type => 'multipart/alternative', ); $body->attach( Type => 'text/plain', Data => $text, Encoding => '8bit', ); $body->attach( Type => 'text/html', Data => Jcode->new($html)->sjis, Encoding => '8bit', ); # インラインで表示する画像 my $image = MIME::Lite->new( Type => 'image/gif; name="cake"', Id => '<cake>', Data => scalar file('.', 'cake.gif')->slurp, Encoding => 'base64', ); my $msg = MIME::Lite->new( Type => 'multipart/related', Subject => 'Happy Birthday!!', From => '送信元アドレス', To => '送信先アドレス', Encoding => '8bit', ); $msg->attach($body); $msg->attach($image); $msg->send;
デコメールテンプレート
デコメールテンプレートのMIMEフォーマットは下記のようになります。

MIMEフォーマットの1行目は、Decomail-Templateで始まり、Content-Typeはmultipart/relatedになります。テンプレートを端末に送信する場合のContent-Typeは、application/x-decomail-templateです。また、テンプレートの改行コードは「CR+LF」でなければならないので注意が必要です。
#!/usr/local/bin/perl use strict; use MIME::Lite; use Path::Class; use CGI; use Jcode; my @field_order = qw( mime-version content-type content-transfer-encoding ); my $html = <<''; <html> <body> <font color="#FF0000">お誕生日おめでとう</font> <img src="cid:cake"> </body> </html> my $image = MIME::Lite->new( Type => 'image/gif; name="cake"', Id => '<cake>', Data => scalar file('.', 'cake.gif')->slurp, Encoding => 'base64', Datestamp => '', ); $image->field_order(@field_order); $image->preamble(''); $image->delete('x-mailer'); my $msg = MIME::Lite->new( Type => 'multipart/related', Datestamp => '', ); $msg->field_order(@field_order); $msg->preamble(''); $msg->delete('x-mailer'); $msg->attach( Type => 'text/html', Data => Jcode->new($html)->sjis, Encoding => '8bit', ); $msg->attach($image); # 1行目に Decomail-Template を付加 my $dmt = "Decomail-Template\r\n". $msg->as_string; # 改行コードを CR+LF に変換 $dmt =~ s/\r\n|\r|\n/\r\n/g; # Content-Type は application/x-decomail-template my $q = CGI->new; print $q->header('application/x-decomail-template'); print $dmt;
まとめ
今回はNTTドコモのデコメールに限定してHTMLメールを紹介してきましたが、先日、auでも「デコレーションメール」というHTMLメールサービスが開始されるという発表がありました。これからもっとHTMLメールを使用するユーザーが増え、サイトからのメール配信もHTMLメールが当たり前になるのかもしれませんね。
