CGIぽん
モバイルCGI研究(EZweb編)
2001年9月2日更新

ez@mail端末の判別とその利用

目次


はじめに

ez@mail に対応している端末とそうでない端末では、メール送信タグの書き方が次のように異なります。ただし、2001年7月の au サーバ工事以来、 "mailto:" 形式で書いておけば、ez@mail 非対応端末でもメール送信ができるようになっています。

このため、どの端末でもメール送信タグを有効にしたい場合は、 CGI で端末を判別して出力するタグを変更する必要があります。その際手がかりになるのが次の環境変数です。

  ez@mail
対応端末
ez@mail
非対応端末
HTTP_X_UP_UPLINK **.ezweb.ne.jp
*は英小文字)
*#.ezweb.ne.jp
w#.ez*.ido.ne.jp
*は英小文字、#は数字)
HTTP_X_UP_FAX_LIMIT 0 10000
HTTP_X_UP_FAX_ACCEPTS none text/plain, application/postscript, application/msword, application/rtf, application/pdf

なお、この情報は au 、 TU-KA 、 Openwave 、 W@P 関連の団体から公式に発表されているものではなく、これまでに出ている端末から推測されるものです。 au の ez@mail 対応端末である C401SA 〜 C409CA と TU-KA の ez@mail 対応端末である TD11 についてはこの方法で振り分けられることが確認されています。

本来は端末固有の情報であるデバイス ID から判別する必要があるとは思いますが、プログラムが煩雑になるのと、新機種が出るたびに書き換えなければならなくなるので、上の環境変数を使う方が便利でしょう。


環境変数 "HTTP_X_UP_UPLINK" を使った判別法

環境変数 "HTTP_X_UP_UPLINK" は経由してくるUPリンクサーバ名を格納しています。

ez@mail 対応端末の場合のフォーマットは*を半角英字とすると

**.ezweb.ne.jp
で、英字の1文字目は au の場合は "a" 、 TU-KA の場合は "t" が入っています。2文字目は "a","b","c","d" などが入っており、これからサーバが増えるにしたがって "e","f"... と続いていくと思われます。

よって、もっともタイトに限定するならば、

Perl
# 環境変数 "HTTP_X_UP_UPLINK" を使ったez@mail端末の判別

if ($ENV{'HTTP_X_UP_UPLINK'} =~ /[at][a-z]\.ezweb\.ne\.jp/) {
  # ez@mail対応端末用の処理
} else {
  # それ以外の端末用の処理
}

となります。少し余裕を持たせたければ

Perl
# 環境変数 "HTTP_X_UP_UPLINK" を使ったez@mail端末の判別

if ($ENV{'HTTP_X_UP_UPLINK'} =~ /[a-z]{2}\.ezweb\.ne\.jp/) {
  # ez@mail対応端末用の処理
} else {
  # それ以外の端末用の処理
}

でもいいかもしれません。


環境変数 "HTTP_X_UP_FAX_LIMIT" を使った判別法

環境変数 "HTTP_X_UP_FAX_LIMIT" は FAX 機能に関するなんらかの制限を示していると思われますが、実際はよくわかりません。

ez@mail 対応端末の場合は "0" を格納しているので、次のような判別が考えられます。

Perl
# 環境変数 "HTTP_X_UP_FAX_LIMIT" を使ったez@mail端末の判別

if (!$ENV{'HTTP_X_UP_FAX_LIMIT'}) {
  # ez@mail対応端末用の処理
} else {
  # それ以外の端末用の処理
}

環境変数 "HTTP_X_UP_FAX_ACCEPTS" を使った判別法

環境変数 "HTTP_X_UP_FAX_ACCEPTS" は ez@mail 対応端末の場合は "none" を格納しているので、次のような判別が考えられます。

Perl
# 環境変数 "HTTP_X_UP_FAX_LIMIT" を使ったez@mail端末の判別

if ($ENV{'HTTP_X_UP_FAX_LIMIT'} eq 'none') {
  # ez@mail対応端末用の処理
} else {
  # それ以外の端末用の処理
}

メールタグへの反映方法

メールタグを出力するたびに ez@mail 端末かどうかを判別するのは面倒なので、変数 $href と変数 $mailto を作り、次のように決めます。

Perl
# $href と $mailto を定義する

if ($ENV{'HTTP_USER_AGENT'} =~ /UP\.Browser/) {
  # EZweb端末ならば
  $href = 'task="go" dest';
  if (!$ENV{'HTTP_X_UP_FAX_LIMIT'}) {
    # ez@mail対応端末用の処理
    $mailto = 'mailto:';
  } else {
    # それ以外の端末用の処理
    $mailto = 'device:home/goto?svc=Email&SUB=sendMsg" vars="TO=';
  }
} else {
  # 他のキャリアの端末ならば
  $href = 'href';
  $mailto = 'mailto:';
}

このようにしておけば、メール送信タグは HDML と HTML のどちらの場合でも

Perl
# $href と $mailto を使ったメール送信タグの記述

$mail = 'foo@somedomain.com';
print "<A $href=\"$mailto$mail\">メールしてね</A>";

と書けばいいので簡単です。


関連リンク

公式サイト
EZweb ホームページを作ろう!
EZweb コンテンツを作ろう!
Openwave(旧Phone.com)
au ホームページ
KDDI Group [ TU-KA ]
非公式サイト
W@P解説ページ
CGIぽん
モバイルCGI研究(EZweb編)環境変数リファレンス

このページの履歴

2002.09.14
関連リンクを修正
2001.09.02
2001年7月のauサーバ工事について言及。このページの存在意義はなくなっている(-_-)
2001.05.06
初版。

CGIぽんはINFOJAMの安価で快適なサーバを利用しています。