PCから絵文字をPCに送信1


PCからデコメ/絵文字をPCに送信するには

まず、絵文字コンテンツを作成するエディタが必要です。それにはFCKeditorエディタにモニターを設置してみてはいかがでしょうか。 この画面を構築するだけでPCへHTMLメールを送信するためのデータは作れます。

http://から始まる絶対パスを設定することで絵文字をPCで受信することが可能です。そのカスタマイズはこちらのページでご確認 をお願いいたします。(但し注意ですが、携帯へはこの方法だけでは絵文字を送信することはできません。絵文字コードへの置換が必要です。)
以下のデモ画面ですが、FCKeditorで入力することでモニターに同時に表示されます。また、絵文字の入力は、太陽アイコンをクリックしていただくと絵文字が入力できます。
また、モニターのSoftBank auボタンを押すことで、各キャリアごとの絵文字を表示させられます。
FCKeditor絵文字用エディタ

PCから絵文字を携帯/スマホに送信するための基本設計

送信するコンテンツデータは、FCKeditorにて作成し、HTMLメール形式での送信する設計を前提としてしております。メールモジュールはQdmailが最適と思います。

・絵文字は画像を添付ファイルにて表示させるのではなく、絵文字コードを携帯/スマホに送信します。
・任意の画像を送信する場合は、添付ファイルにて携帯/スマホに送信します。
・絵文字コードは、各キャリアごとに異なるので、送信する前に絵文字コードに置換して送信します。
・auは、特に他のキャリアとエンコードが異なるので、別のロジックが必要です。

PCから絵文字を携帯/スマホに送信するには

PCから絵文字を携帯/スマホに送信する場合、いろいろなノウハウが隠されており、他サイトでは公開しませんでしたが、このサイトでは是非公開したいと思います。
以下の方法は、デモレベルではなく実際に商用で使用しております。
①Qdmailについて
Qdmailを使用して、auの絵文字を送信できない…という記述を見掛けますがそんなことはありません。送信することは可能です。但し若干のカスタマイズは必要です。

②各キャリアごとのエンコードの選択、絵文字コードの選択がポイントです
docomo、SoftBankはUTF-8で設定します。理由は絵文字バイナリコードがUTF-8が対応しているためです。 auの「Eメール送出用のバイナリコード」はJISもしくはShift_JISしかありません。au自体はUTF-8の絵文字以外のメールを受信することは可能ですが、絵文字のバイナリコードは UTF-8で対応していないため、絵文字を表示させられません。(もしかしてUTF-8用のバイナリコードを作ることは可能かもしれませんが、何度も挑戦しましたが無理でした…)

③絵文字コードについて
絵文字コードは大きく2つに分類されます。Webページ表示用とメール用です。Webページ表示用(au)は<img localsrc="絵文字番号">のように記述しますが、メールでは使用できません。  メール用の絵文字コードは、テキスト形式で入力可能なUnicode数値文字参照形式(&#xE63E;)、バイナリ形式があります。Unicode数値文字参照形式で携帯(docomo,softbank)に送信して表示させる ことはできましたが、docomo Androidスマホでは表示できなかったためバイナリ形式をお進めします。

④FCKeditorのデータから絵文字バイナリコードに変換するには
au携帯の場合は
<img alt=”” src=”http://www.ijtc.co.jp/anchor/fck/editor/emoji/i/F89F.gif” />からauのバイナリコードpack(“c*”,0xEB,0x60)で置換するプログラムを正規表現を用いて構築すればいいのです。但し、Chromeの場合<img src=”http://www.ijtc.co.jp/anchor/fck/editor/emoji/i/F89F.gif” alt=”” />になる場合があり、
両パターンを正規表現で置換ができるようにしないといけません。以下のような感じです。
$hash = array(
‘<img src=”http://ijtc.co.jp/img/fck/emoji/i/’ => ‘&#x’
);
&#xF98D.gif” /> -> &#xF98D; に置換するためのHASH作成して
preg_match_all(‘/&#x([0-9A-F]+).gif/’, $data_emoji_kigo, $matches);
$matchesからデータ&#xF98D;を入手する。
au用絵文字バイナリコード配列を作成して置換します。
$henkan_au = array(“&#xF89F;” => pack(“c*”,0xEB,0x60), “&#xF8A0;” => pack(“c*”,0xEB,0x65),…….);
$data_emoji_au = strtr(“変換させるメール本文”,$henkan_au);
auの文字コードはこちらの(参考)Eメール送出用JISコードに対応したShift-JISコードを参照して下さい。

docomo携帯/Androidスマホの場合は
$henkan_emo = array(“&#xF89F;” => “”, “&#xF8A0;” => “”,………);のように変換用配列を作成します。
「・」はバイナリコードでこちらのサイトよりコピーして使用することができます。(非常に簡単でした)
そして以下の通り絵文字コードに置換します。
$data_emoji = strtr(“変換させるメール本文”,$henkan_emo);

softbank携帯の場合は
softbank用絵文字コード配列を以下の通り作成します。softbank携帯はtextメール、htmlメールともにUnicode数値文字参照形式(&#xE63E;)が使用できます。
また、ここでは”&#x”は変換する必要がないのでコードのみを置換します。
$henkan_softbank = array(“F89F” => “E04A”, “F8A0” => “E049”, “F8A1” => “E04B”,……);
softbank文字コードはこちらのサイトより参考にして下さい。

⑤text/html(htmlメール)で絵文字を送信する
 どのサイトを確認しても、絵文字を送信する条件として、text/plain(テキスト)のことしか記載がなく、text/html(htmlメール)において絵文字を送信することについて記載がないのでここで明確に記載します。
絵文字コードはhtmlソース中に「絵文字バイナリコード」を含めて、送信することが可能です。Qdmailは、添付ファイル、htmlメールに対して対応ができており、使用することが可能です。

⑥docomoの絵文字に対して、au,softbankの絵文字で対応していない絵文字があります。その場合は「〓」で表示する必要があります。遊園地の絵文字は、docomoだけで、au,softbankにはありません。

Qdmailのカスタマイズについて

①docomo,softbankに対する対応
Qdmailのシステムで使用されているエンコードはUTF-8ですので、そのままご使用できます。但し、以下のエンコードの変更が必要です。
・237行目
array(
  ’OPTION_NAME’  => array( ‘DC’ , ‘DOCOMO’ ),
  ’STRUCTURE’    => 2,
  //’_CHARSET’    => ‘iso-2022-jp’,
  ’_CHARSET’    => ‘UTF-8’,
  ’ENC_TEXT’    => ‘7bit’,
  ’ENC_HTML’    => ‘QUOTED-PRINTABLE’,
  ’HTML_EXTERNAL’  => array(‘this’,’stripCrlf’),
  ’DISPOSITION’  => false,
),
・257行目
array(
  ’OPTION_NAME’  => array( ‘SB’ , ‘SOFTBANK’ ),
  ’STRUCTURE’    => 4,
  //’_CHARSET’    => ‘iso-2022-jp’,
  ’_CHARSET’    => ‘UTF-8’,
  ’ENC_TEXT’    => ‘7bit’,
  ’ENC_HTML’    => ‘QUOTED-PRINTABLE’,
  ’HTML_EXTERNAL’  => array(‘this’,’stripCrlf’) ,
  ’DISPOSITION’  => true ,
),

②auに対する対応
auの「Eメール送出用のバイナリコード」はJISもしくはShift_JISしかないため、以下のカスタマイズが必要です。
・ファイルをShift_JIS、改行コードLFにて設定しなおす
・docomo,softbankと併用して使用する場合、Class名を全て変更すること
・最初に以下のエンコード設定を加える
mb_internal_encoding(‘Shift_JIS’);
mb_http_output(‘Shift_JIS’);
・133行目のシステムエンコードをUTF-8からShift_JISに変更
var $qdmail_system_charset = ‘Shift_JIS’;
・247行目近辺でiso-2022-jpからShift_JISに変更する
array(
  ’OPTION_NAME’  => array( ‘AU’ ,’EZ’, ‘EZWEB’),
  ’STRUCTURE’    => 3,
  ’_CHARSET’    => ‘Shift_JIS’,
  ’ENC_TEXT’    => ‘7bit’,
  ’ENC_HTML’    => ‘QUOTED-PRINTABLE’,
  ’HTML_EXTERNAL’  => array(‘this’,’stripCrlf’),
  ’DISPOSITION’  => true,
),

PCから画像を携帯/スマホに送信するには

添付ファイルとして、送信する必要があります。Qdmailにはその機能がございます。以下の通り、ファイルのパス+ファイル名を$attachPathに配列で入れることで、添付ファイル(画像)が送信できます。
$this->Qdmail->attach ( $attachPath , $attachName );

絵文字について質問する

Webアプリケーション開発に戻る