Yanor.net/
Wiki
Blog
GitHub
Sandbox
開始行:
* 絵文字メール送信(Perl+Encode::JP::Mobile) [#rb16e0cf]
** 目的 [#xbb54875]
3キャリア(+PC)対応した絵文字メール送信処理を作る。絵文...
** 方針 [#r542d1d0]
- ドコモとAUはSJISで、ソフトバンクはUTF8で、PCはISO-2022-...
-- その他の文字コードでも(絵文字なし・ありの)メール送信...
- 絵文字はドコモのSJISコードを使って指定する。
-- SJISコードは人間の目には見づらいので、絵文字対応表を自...
- Encode::JP::Mobileで絵文字を含めた文字列のエンコーディ...
- Mail::Address::MobileJpを使って、メールアドレスからキャ...
- MIME::Base64を使って、本文のMIMEエンコードをする。
-- Encode::JP::MobileやMail::Address::MobileJpの次のバー...
** サンプルコード [#hac13ca5]
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( enco...
: is_softbank($email_to)
? '=?UTF-8?B?' . MIME::Base64::encode_base64( encode( ...
: is_ezweb($email_to)
? '=?SHIFT-JIS?B?' . MIME::Base64::encode_base64( enco...
: '=?ISO-2022-JP?B?' . MIME::Base64::encode_base64( en...
my $email_from_encoded = sprintf '%s <%s>', $from_name_e...
$subject .= $emoji_chars;
my $subject_encoded =
is_imode($email_to)
? '=?SHIFT-JIS?B?' . MIME::Base64::encode_base64( enco...
: is_softbank($email_to)
? '=?UTF-8?B?' . MIME::Base64::encode_base64( encode( ...
: is_ezweb($email_to) ? encode( 'x-sjis-kddi-auto', $s...
: '=?ISO-2022-JP?B?' . MIME::Base64::encode_base64( ...
my $body_encoded =
is_imode($email_to) ? encode( 'x-sjis-docomo', ...
: is_softbank($email_to) ? encode( 'x-utf8-softbank', ...
: is_ezweb($email_to) ? encode( 'x-sjis-kddi-auto',...
: encode( 'iso-2022-jp', $bod...
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;
- AUではサブジェクトをMIMEエンコードすると化けるらしいの...
** 参考 [#n3f4bde0]
*** CPAN [#f6a9d324]
- http://search.cpan.org/perldoc?Encode::JP::Mobile
- http://search.cpan.org/perldoc?Encode::JP::Mobile::Cook...
- http://search.cpan.org/perldoc?Mail::Address::MobileJp
*** その他 [#w45b29d4]
- Perlで作るモバイルサイトのコツ:第7回 絵文字を含んだメ...
- use Encode::JP::Mobile; - Perl標準の機能を使った絵文字...
- Encode::JP::Emoji - emoji4unicode ベースの絵文字変換 Pe...
- 携帯の文字コードと絵文字の基礎知識 http://coderepos.org...
*** ドコモ 公式 絵文字一覧 [#q9531010]
- http://www.nttdocomo.co.jp/service/imode/make/content/p...
終了行:
* 絵文字メール送信(Perl+Encode::JP::Mobile) [#rb16e0cf]
** 目的 [#xbb54875]
3キャリア(+PC)対応した絵文字メール送信処理を作る。絵文...
** 方針 [#r542d1d0]
- ドコモとAUはSJISで、ソフトバンクはUTF8で、PCはISO-2022-...
-- その他の文字コードでも(絵文字なし・ありの)メール送信...
- 絵文字はドコモのSJISコードを使って指定する。
-- SJISコードは人間の目には見づらいので、絵文字対応表を自...
- Encode::JP::Mobileで絵文字を含めた文字列のエンコーディ...
- Mail::Address::MobileJpを使って、メールアドレスからキャ...
- MIME::Base64を使って、本文のMIMEエンコードをする。
-- Encode::JP::MobileやMail::Address::MobileJpの次のバー...
** サンプルコード [#hac13ca5]
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( enco...
: is_softbank($email_to)
? '=?UTF-8?B?' . MIME::Base64::encode_base64( encode( ...
: is_ezweb($email_to)
? '=?SHIFT-JIS?B?' . MIME::Base64::encode_base64( enco...
: '=?ISO-2022-JP?B?' . MIME::Base64::encode_base64( en...
my $email_from_encoded = sprintf '%s <%s>', $from_name_e...
$subject .= $emoji_chars;
my $subject_encoded =
is_imode($email_to)
? '=?SHIFT-JIS?B?' . MIME::Base64::encode_base64( enco...
: is_softbank($email_to)
? '=?UTF-8?B?' . MIME::Base64::encode_base64( encode( ...
: is_ezweb($email_to) ? encode( 'x-sjis-kddi-auto', $s...
: '=?ISO-2022-JP?B?' . MIME::Base64::encode_base64( ...
my $body_encoded =
is_imode($email_to) ? encode( 'x-sjis-docomo', ...
: is_softbank($email_to) ? encode( 'x-utf8-softbank', ...
: is_ezweb($email_to) ? encode( 'x-sjis-kddi-auto',...
: encode( 'iso-2022-jp', $bod...
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;
- AUではサブジェクトをMIMEエンコードすると化けるらしいの...
** 参考 [#n3f4bde0]
*** CPAN [#f6a9d324]
- http://search.cpan.org/perldoc?Encode::JP::Mobile
- http://search.cpan.org/perldoc?Encode::JP::Mobile::Cook...
- http://search.cpan.org/perldoc?Mail::Address::MobileJp
*** その他 [#w45b29d4]
- Perlで作るモバイルサイトのコツ:第7回 絵文字を含んだメ...
- use Encode::JP::Mobile; - Perl標準の機能を使った絵文字...
- Encode::JP::Emoji - emoji4unicode ベースの絵文字変換 Pe...
- 携帯の文字コードと絵文字の基礎知識 http://coderepos.org...
*** ドコモ 公式 絵文字一覧 [#q9531010]
- http://www.nttdocomo.co.jp/service/imode/make/content/p...
ページ名: