絵文字メール送信(Perl+Encode::JP::Mobile)目的3キャリア(+PC)対応した絵文字メール送信処理を作る。絵文字は件名・本文共に使用可能にする。 方針
サンプルコードuse utf8; use Encode; use Encode::JP::Mobile; use Mail::Address::MobileJp; use MIME::Lite; use MIME::Base64; my $email_from = 'taro@example.net'; my $from_name = '太郎'; my $email_to = 'hanako@ezweb.ne.jp'; my $subject = "件名です"; my $body = "本文です"; my $emoji_bytes = "\xF8\x9F"; # ドコモのSJISコード「太陽」 my $emoji_chars = decode( 'x-sjis-imode', $emoji_bytes ); my $from_name_encoded = is_imode($email_to) ? '=?SHIFT-JIS?B?' . MIME::Base64::encode_base64( encode( 'x-sjis-docomo', $from_name ), '' ) . '?=' : is_softbank($email_to) ? '=?UTF-8?B?' . MIME::Base64::encode_base64( encode( 'x-utf8-softbank', $from_name ), '' ) . '?=' : is_ezweb($email_to) ? '=?SHIFT-JIS?B?' . MIME::Base64::encode_base64( encode( 'x-sjis-kddi-auto', $from_name ), '' ) . '?=' : '=?ISO-2022-JP?B?' . MIME::Base64::encode_base64( encode( 'iso-2022-jp', $from_name ), '' ) . '?='; my $email_from_encoded = sprintf '%s <%s>', $from_name_encoded, $email_from; $subject .= $emoji_chars; my $subject_encoded = is_imode($email_to) ? '=?SHIFT-JIS?B?' . MIME::Base64::encode_base64( encode( 'x-sjis-docomo', $subject ), '' ) . '?=' : is_softbank($email_to) ? '=?UTF-8?B?' . MIME::Base64::encode_base64( encode( 'x-utf8-softbank', $subject ), '' ) . '?=' : is_ezweb($email_to) ? encode( 'x-sjis-kddi-auto', $subject ) : '=?ISO-2022-JP?B?' . MIME::Base64::encode_base64( encode( 'iso-2022-jp', $subject ), '' ) . '?='; my $body_encoded = is_imode($email_to) ? encode( 'x-sjis-docomo', $body . $emoji_chars ) : is_softbank($email_to) ? encode( 'x-utf8-softbank', $body . $emoji_chars ) : is_ezweb($email_to) ? encode( 'x-sjis-kddi-auto', $body . $emoji_chars ) : encode( 'iso-2022-jp', $body . $emoji_chars ); my $encoding = is_imode($email_to) ? 'base64' : is_softbank($email_to) ? 'base64' : is_ezweb($email_to) ? 'base64' : '7bit'; my $msg = MIME::Lite->new( From => $email_from_encoded, To => $email_to, Subject => $subject_encoded, Data => $body_encoded, Encoding => $encoding, ); $msg->attr( 'content-type' => 'text/plain' ); $msg->attr( 'content-type.charset' => ( is_imode($email_to) ? 'Shift_JIS' : is_softbank($email_to) ? 'UTF-8' : is_ezweb($email_to) ? 'Shift_JIS' : 'ISO-2022-JP' ) ); $msg->send;
参考CPAN
その他
ドコモ 公式 絵文字一覧 |
|