絵文字メール送信(Perl+Encode::JP::Mobile)

方針

  • 3キャリア対応した絵文字メール送信処理を作る。
  • ドコモとAUはSJISで、ソフトバンクはUTF8で本文をエンコーディングする。
  • 絵文字はドコモのSJISコードを使って指定する。
  • Encode::JP::Mobileで絵文字を含めた文字列のエンコーディングを相互変換する。
  • Mail::Address::MobileJpを使って、メールアドレスからキャリアを判別する。

サンプルコード

 #!/usr/local/bin/perl
 
 use strict;
 use warnings;
 use utf8;
 use Encode;
 use Encode::JP::Mobile;
 use Mail::Address::MobileJp;
 use MIME::Lite;
 use Jcode;
 
 my $email_from  = 'taro@example.net';
 my $email_to    = 'hanako@ezweb.ne.jp';
 my $text        = "こんにちは:";
 my $emoji_bytes = "\xF8\x9F"; # ドコモのSJISコード「太陽」
 my $emoji_chars = decode( 'x-sjis-imode', $emoji_bytes );
 my $mail_encoding =
     ( is_imode($email_to) )    ? 'x-sjis-docomo'
   : ( is_softbank($email_to) ) ? 'x-utf8-softbank'
   : ( is_ezweb($email_to) )    ? 'x-sjis-kddi-auto'
   :                              'x-sjis-docomo';
 
 my $msg = MIME::Lite->new(
     From     => $email_from,
     To       => $email_to,
     Subject  => 'HELLO!',
     Data     => encode( $mail_encoding, $text.$emoji_chars),
     Encoding => '8bit',
 );
 $msg->attr( 'content-type' => 'text/plain' );
 $msg->attr( 'content-type.charset' => $mail_encoding =~ /utf8/ ? 'UTF-8' : 'Shift_JIS' );
 $msg->send;

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS