SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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


  • X ポスト

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

  • X ポスト

はじめに

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

 デコメールとは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;

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
HTML+インライン画像

この記事は参考になりましたか?

  • X ポスト
Perlで作るモバイルサイトのコツ連載記事一覧

もっと読む

この記事の著者

村上 洋一郎(ムラカミ ヨウイチロウ)

株式会社ライブドア メディア事業部 モバイルメディア部所属。占いサイトやコミュニティサイトなど、様々なエンタメ系サイトの開発を担当しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
CodeZine(コードジン)
https://codezine.jp/article/detail/550 2008/08/26 13:51

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング