メーラーのUA(ユーザエージェント)の調査〜終章

前回メールクライアントのUA情報について調査を行いました。
結果、シェアの多そうなOutlookExpressが嘘をついている!ことが判明しました。
どげんかせんといかん!ということで、その対策を考えてみました。
(そもそもブラウザ戦争にせよ、ベンダーの尻拭い的なのは不愉快ですが。。)

■案1:スクリプトを仕込む
■案2:サーバに送信されるヘッダー情報を観察してみる

案1はメーラーは基本的にJavascriptは処理しないだろうという仮説に基づいた方法です。
javascriptが動作する場合はパラメータ(クエリ)ありで画像のURLを設定し、動作しない場合はパラメータなしとします。
仮説どおりであれば、IEだとパラメータがついて、OLだとつかないので見分けがつきます。

案2は、HTMLメールを表示する際に送信されるHTTPヘッダーがOutlookExpressとInternetExplorerでは何か違いがあるのではないか?という仮説です。

■案1:スクリプトを仕込む
今回の実験では単純に<script>と<noscript>で振り分けを実装しました。
scriptタグではパラメータありのimgタグを出力し、noscriptタグでは普通にパラメータなしのimgタグを記述しました。

─【案1の結果】────────
OutlookExpress:パラメータなしでのアクセス
InternetExplorer:パラメータありでのアクセス

おぉ!うまくいきました!
Javascriptを使えば、IEとOEの見分けはつけられそうです!

ただ、、、、です。
HTMLメールにスクリプトを仕込むなんて、迷惑メールとして扱われる可能性が高そうです。
迷惑メールになっては、そもそもメールを送る意味が無いですよね。

今回はメールクライアントの情報をどこまで得られるか?という視点での実験なので、よいこのみんなはマネしないように!

■案2:サーバに送信されるヘッダー情報を観察してみる
こちらは案1のようにクライアント側に仕込まないので、これによって迷惑メールとなることはないでしょう。
もし判別できれば実際に活用できそうです。期待が膨らみますね!

実験はHTMLメール内にimgタグを仕込み、そのソースURLをPHPスクリプトにします。
PHPスクリプト側で、ユーザのリクエストヘッダーを解析・記録します。

OutlookExpressとInternetExplorerでリクエストヘッダーに何か違いがあれば、判別ができることになります。
さて、その結果は・・・

─【案2の結果】────────
違いがあったのは、以下の3つ。
・REQUEST_TIME
・REMOTE_PORT
・HTTP_ACCEPT

まずREQUEST_TIMEはリクエストのあった日時なので違って当然です。無視。
REMOTE_PORTは、ユーザ側の接続に使用しているポートですが、これは接続のたびに変わります。やはり、無視。
最後に、HTTP_ACCEPTですが・・・これは・・・使えそうです!

… InternetExplorer …………
image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/x-silverlight, */*
… OutlookExpress …………
*/*

OutlookExplorerの方がシンプルな内容となっています!
HTTP_ACCEPTの値が「*/*」のみの場合はOutlookExpressだと考えられます。
■結論!
OutlookExpressとIEの違いを判別することは「可能」です!
方法1:SCRIPTタグを使って、判別する
方法2:リクエスト情報からHTTP_ACCEPTを元に判別する
※方法1はスパム判定に引っかかる恐れがあるため、現実的ではない。

以上、電子メールクライアントのUA調査についての調査結果でした~!
皆さんもたまには、メールソフトについて考えてみてはいかがでしょうか?

ブックマークプラス by SEO対策