モバイルCGI研究(EZweb編)
|
2001年9月2日更新 |
ez@mail に対応している端末とそうでない端末では、メール送信タグの書き方が次のように異なります。ただし、2001年7月の au サーバ工事以来、 "mailto:" 形式で書いておけば、ez@mail 非対応端末でもメール送信ができるようになっています。
HDML
<A task="go" dest="mailto:foo@somedomain.com">メールしてね</A>
HDML
<A task="go" dest="device:home/goto?svc=Email&SUB=sendMsg" vars="TO=bar@somedomain.com">メールしてね</A>
HTML
<A href="mailto:pon@somedomain.com">メールしてね</A>
このため、どの端末でもメール送信タグを有効にしたい場合は、 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 |
本来は端末固有の情報であるデバイス ID から判別する必要があるとは思いますが、プログラムが煩雑になるのと、新機種が出るたびに書き換えなければならなくなるので、上の環境変数を使う方が便利でしょう。
環境変数 "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" は 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" は 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>";
と書けばいいので簡単です。
CGIぽんはINFOJAMの安価で快適なサーバを利用しています。
|
CGIぽん (C)Copyright 2000-2002 OGATA,Tetsuji
|