• 追加された行はこの色です。
  • 削除された行はこの色です。
* 絵文字メール送信(Perl+Encode::JP::Mobile) [#rb16e0cf]


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

** サンプルコード [#hac13ca5]

 #!/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