NAME
    Email::Address::JP::Mobile - Japanese carrier email class

SYNOPSIS
      use Email::Address::JP::Mobile;
  
      my $carrier = Email::Address::JP::Mobile->new('docomo.taro.@docomo.ne.jp');
      $carrier->is_mobile;      # => true
      $carrier->name;           # => "DoCoMo"
      $carrier->carrier_letter; # => "I"
  
      $body    = $carrier->send_encoding->encode($body);
      $subject = $carrier->mime_encoding->encode($subject);

    or, via Email::Address object

      use Email::Address::Loose;
      use Email::Address::JP::Mobile;
  
      my ($email) = Email::Address::Loose->parse('docomo.taro.@docomo.ne.jp');
      # $email is a Email::Address object
      $email->carrier->is_mobile; # => true

DESCRIPTION
    Email::Address::JP::Mobile is a module for Japanese web developers.

    このモジュールは要するに HTTP::MobileAgent のメール版です。
    メールアドレスから、それがどのキャリアで発行されたメールアドレスかを判別します。

    同様のことができるモジュールに Mail::Address::MobileJp があります。
    Email::Address::JP::Mobile は Email::Address オブジェクトを拡張する点や、
    "is_mobile($email)" ではなく "$email->carrier->is_mobile"
    というインターフェースである点が違います。

USAGE
    $carrier = Email::Address::JP::Mobile->new( $address )
        メールアドレスから、Email::Address::JP::Mobile::* の対応したクラスを返します。

          my $carrier = Email::Address::JP::Mobile->new('docomo.taro.@docomo.ne.jp');
          # $carrier is a Email::Address::JP::Mobile::DoCoMo
          $carrier->is_mobile;      # => true
          $carrier->name;           # => "DoCoMo"
          $carrier->carrier_letter; # => "I"

        携帯のメールアドレスではないと判断した場合は Email::Address::JP::Mobile::NonMobile
        クラスを返します。

    $carrier = $email->carrier()
        Email::Address::JP::Mobile は Email::Address オブジェクトに、対応したクラスを返す
        "carrier()" というメソッドを拡張します。

          use Email::Address;
          use Email::Address::JP::Mobile;
          my ($email) = Email::Address->parse('docomo.taro@docomo.ne.jp');
          $email->carrier->carrier_letter; # "I"

        ご存知のように日本の携帯は変なアドレスが許可されている期間が長かったので、 携帯アドレスをパースする可能性があるのであれば
        Email::Address::Loose を 利用もしくは併用した方がよいです。

          use Email::Address;
          use Email::Address::JP::Mobile;
          use Email::Address::Loose -override;
          my (@email) = Email::Address->parse('docomo.taro.@docomo.ne.jp');
          $email->carrier->carrier_letter; # "I"

CARRIER CLASS METHODS
    $carrier->is_mobile()
    $carrier->name()
    $carrier->carrier_letter()
        各メソッドが返す値は以下のとおりです。

                     is_mobile  name         carrier_letter
          -------------------------------------------------
          DoCoMo     true       "DoCoMo"     "I"
          au         true       "EZweb"      "E"
          SoftBank   true       "SoftBank"   "V"
          WILLCOM    true       "AirH"       "H"
          NonMobile  false      "NonMobile"  "N"

    $carrier->mime_encoding()
          $subject = $carrier->mime_encoding->encode($subject);
          $subject = $carrier->mime_encoding->decode($subject);

        そのキャリア向けにメールを送信する際、絵文字を含んだ Subject を MIME encode
        するためのエンコーディングを返します。何を返すかは "ENCODINGS" を参照してください。

        "$carrier->is_mobile"の場合は、そのキャリアの端末から受信したメールの Subject を MIME decode
        するためにも利用できます。ただし DoCoMo や SoftBank からの場合絵文字は最初からゲタになり取れないため通常の
        "MIME-Header-ISO_2022_JP" 扱いとなります。

        NonMobile の場合には MIME-Header-ISO_2022_JP エンコーディングが返りますが、これは現状 decode
        に対応していません。代わりに MIME-Header というエンコーディングで decode する必要があるので注意してください。

    $carrier->send_encoding()
          $body = $carrier->send_encoding->encode($body);

        そのキャリア向けにメールを送信する際、絵文字を含んだメール本文を encode
        するためのエンコーディングを返します。何を返すかは"ENCODINGS"を参照してください。

    $carrier->parse_encoding()
          $body = $carrier->parse_encoding->decode($body);

        そのキャリアから受信したメールの絵文字を含んだメール本文を decode
        するためのオススメなエンコーディングを返します。これはメール本文の "Content-Type"
        をチェックしているわけではなく、そのキャリアの場合このエンコーディングで送ってくるだろうというものを返しているだけである点に留意してくだ
        さい。また、DoCoMo や SoftBank からの場合絵文字は最初からゲタになり取れないため普通の "iso-2022-jp"
        を返します。

  ENCODINGS
    上記の各メソッドが返すエンコーディングは以下のとおりです。（返すのは文字列ではなく Encode::Encoding です）

                 mime_encoding                   send_encoding     parse_encoding
      ------------------------------------------------------------------------------------
      DoCoMo     MIME-Header-JP-Mobile-DoCoMo    x-sjis-docomo     iso-2022-jp
      au         MIME-Header-JP-Mobile-KDDI      x-sjis-kddi-auto  x-iso-2022-jp-kddi-auto
      SoftBank   MIME-Header-JP-Mobile-SoftBank  x-utf8-softbank   iso-2022-jp
      WILLCOM    MIME-Header-JP-Mobile-AirH      x-sjis-airh       x-iso-2022-jp-airh
      NonMobile  MIME-Header-ISO_2022_JP         iso-2022-jp       iso-2022-jp

    MIME-Header-JP-Mobile-* や x-* のエンコーディングは Encode::JP::Mobile
    （0.27以降）が提供するエンコーディングです。

    $Email::Address::JP::Mobile::NonMobile::Encoding
          local $Email::Address::JP::Mobile::NonMobile::Encoding = 'utf-8';

          my $carrier = Email::Address::JP::Mobile->new('tomita@example.com');
          $carrier->mime_encoding;  # MIME-Header encoding
          $carrier->send_encoding;  # utf-8 encoding
          $carrier->parse_encoding; # utf-8 encoding

        NonMobile の場合のデフォルトエンコーディングは iso-2022-jp ですが、この変数で utf-8
        を指定すると上記のようなエンコーディングを返します。

SEE ALSO
    Email::MIME::MobileJP - 携帯メール送受信のバッドノウハウをラップしたモジュール

    <http://coderepos.org/share/wiki/Mobile/Encoding>

    Email::Address::Loose, Mail::Address::MobileJp, Encode::JP::Mobile

    #mobilejp on irc.freenode.net (I've joined as "tomi-ru")

AUTHOR
    Naoki Tomita <tomita@cpan.org>

LICENSE
    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

