絵文字メール送信(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
その他
ドコモ 公式 絵文字一覧 |