Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Perlで作るモバイルサイトのコツ:第2回

CPANモジュールでデコメールを作成する

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/09/06 00:00

本連載では、Perlによる携帯サイトを構築する上で役立つ、さまざまなTipsを解説していきます。第2回は、CPANモジュールのMIME::Liteを使ったサンプルを用いて、デコメールの基本的な仕様について解説します。

目次

はじめに

 若い世代の女性を中心にデコメールが注目されています。

 デコメールとはNTTドコモのFOMA900iシリーズから導入された簡易HTMLメール機能で、HTMLメールならではの文字修飾、画像の埋め込みなどが可能です。これらの機能を使えば、ただのテキストのメールよりも個性的でかわいいメールを送ることができるので、それが人気につながっているようです。

 デコメールの仕様は下記で公開されています。

 本稿ではCPANモジュールのMIME::Liteを使ったサンプルを用いて、デコメールの基本的な仕様について解説します。

 ※CPANについては、第1回を参照してください。

対象読者

  • PerlでCGIアプリケーションを作成したことのある方。
  • CPANモジュールを使用したことのある方。
  • 携帯サイトでデコメールを配信しようとされている方。

必要な環境

 Perl 5.8以上が動作し、メールを送信することができるサーバ。

デコメールのパターン

 大きく分けてデコメールには、以下の4つのパターンがあります。

  1. HTMLのみ
    HTMLのみを送信するパターンです。
  1. HTML+画像添付
    HTMLに併せて画像を添付するパターンです。
  1. HTML+インライン画像
    HTML内に画像をインライン表示させるパターンです。
  1. デコメールテンプレート
    デコメールテンプレートと呼ばれるデコメールの雛形を扱うパターンです。ユーザーは、このテンプレートを編集して送信することができます。

 それでは、これら4つのパターンについて、サンプルと併せて見ていきましょう。

HTMLのみ

 HTMLのみのMIMEフォーマットは下記のようになります。

図1:HTMLのみの場合
図1:HTMLのみの場合

 Content-Typeをmultipart/alternativeとして、TEXTパートとHTMLパートを送信します。デコメール非対応端末には、TEXTパートのみ送信されることになりますので、必ずTEXTパートをつけるようにしましょう。

sample1.pl
#!/usr/local/bin/perl

use strict;
use MIME::Lite;
use Jcode;

my $text = 'お誕生日おめでとう';
my $html = <<'';
<html>
<body>
<font color="#FF0000">お誕生日おめでとう</font>
</body>
</html>

my $msg = MIME::Lite->new(
    Type     => 'multipart/alternative',
    Subject  => 'Happy Birthday!!',
    From     => '送信元アドレス',
    To       => '送信先アドレス',
    Encoding => '8bit',
);

# HTMLパート(対応端末に送信される部分)
$msg->attach(
    Type => 'text/html',
    Data => Jcode->new($html)->sjis,
    Encoding => '8bit',
);

# TEXTパート(非対応端末に送信される部分)
$msg->attach(
    Type => 'text/plain',
    Data => $text,
    Encoding => '8bit',
);

$msg->send;

HTML+画像添付

 画像を添付する場合は、下記のようなMIMEフォーマットになります(GIFファイルを添付した例です)。

図2:HTMLに画像を添付する場合
図2:HTMLに画像を添付する場合

 Content-Typeはmultipart/mixedで送信します。添付ファイルは、GIF・JPG・SWFファイルが利用できます。

sample2.pl
#!/usr/local/bin/perl

use strict;
use MIME::Lite;
use Jcode;
use Path::Class;

my $text = 'お誕生日おめでとう';
my $html = <<'';
<html>
<body>
<font color="#FF0000">お誕生日おめでとう</font>
</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',
);

# 添付する画像ファイル(base64でエンコード)
my $image = MIME::Lite->new(
    Type => 'image/gif; name="cake"',
    Data => scalar file('.', 'cake.gif')->slurp,
    Encoding => 'base64',
);

my $msg = MIME::Lite->new(
    Type     => 'multipart/mixed',
    Subject  => 'Happy Birthday!!',
    From     => '送信元アドレス',
    To       => '送信先アドレス',
    Encoding => '8bit',
);

$msg->attach($body);
$msg->attach($image);
$msg->send;

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:Perlで作るモバイルサイトのコツ

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5