Now Loading !!!
web tool

【js_mailto】

メールアドレスを暗号化してホームページに記述する


 ホームページでは「メールアドレスを直接記述するとスパムの嵐に巻き込まれる」というのが「常識」です。しかし、どうしても記述したいときは、本文のように「アドレスを暗号化」する方法がありますので、そのご紹介。

は じ め に

ある日突然大量のスパムメールが届く

 ホームページ上の管理人のメールアドレスに、ある日突然、大量のスパムメールが届くようになった、という経験を持つ方方も多いと思います。 普段は使用していない、ホームページ管理用のアドレスなのに「どうして??」。
 ホームページ上にそのアドレスを記述していませんか。通常、これは、ウェブ上を巡回してメールアドレスを収集するロボットに補足されたことにより、スパム送信業者等にアドレスが流れた、という可能性が高いですね。こうなると、セキュリティソフトやメーラーのスパムフィルターも完全なものでなく、最終的にはアドレスを変えるしかないという事態に発展します。

 こうしたロボット対策として「javascriptを用いてメールアドレスをエンコード(疑似暗号化)する方法がある」というので、早速、応用させて頂きました。

拝借させて頂いた智恵

 今回の技術的バックボーンはすべて下記のサイトで教えを乞いました。改めて御礼申し上げます。

 なお、メールアドレスの疑似暗号化は、上記サイトにアクセスしてエンコード(疑似暗号化)されたものを使用させて頂いています。

従来のロボット対策術

 簡便な方法

■メールアドレスの前にアンダーバー等をつけておく

 私の場合、一番最初はメールアドレスの前にアンダーバー等をつけて表示する方法を用いていました。

    maito:_abcdefg@xyz.com (メール送信される場合は、最初のアンダーバーをとり除いて下さい)

 しかし、これはホームページのユーザーにすこぶる不評でした。まして、アンダーバー付とはいえアドレスをそのまま記述するのですから効果も判然とはしません。

■メールアドレスを画像で表示

 次に、メールアドレスを画像で表示していました。

    画像で表示:メールアドレス

 これまた「しかし」です。これではユーザーがメールを送るためには、このアドレスをメーラーに一字づつ入力しなければなりません。あまりスマートな方法とは言えませんね。

 より確実な方法

■メールフォームでメールを送ってもらう

 ロボット対策としてより確実な方法は、本サイトでも採用していますが、「メールフォームに必要な事項を記入して送信してもらう」方法です。

    web工房にメールを送る
        (※実際に使用中のものですので、試験的にメールを送らないで下さい。)

 この方法は、メール送信をサーバー側で行いますので、メールアドレスをクライアント側に記述する必要がなく、ロボット対策としては確実だと思います。管理人の望むフォームでメールを頂けるので、自動的にメールをエクセルに取り込んだりすることが楽にできますし、SSLの使用も可能なのでセキュリティレベルもあがります。
  しかし...。メールフォームを作るのは結構手間がかかりますし、cgiやphp等のスクリプトの技術が不可欠で、「敷居の高い」方法です。

【動かすキモ】

メールアドレスをエンコード(疑似暗号化)してホームページに記述する

 htmlとjavascriptの記述方法

 javascriptの知識は必要ですが、メールアドレスをエンコード(疑似暗号化)して、ホームページ上に直接記述する方法があります。javascriptを外部ファイルにしておけば複数のページで共用できますし、また、複数のアドレスにも適用できます。

■外部jsファイルにリンク

 html上のhead部に外部jsファイルへのリンクを記述します。

  (htmlファイル:)
<html>
<head>
...
<script type="text/javascript" src="js_mailto.js"></script>
</head>
<body>
...
...

■アドレスを記述する部分でjavascriptを実行

 html上のメールアドレス書きたい場所でjavascriptを実行します。  引数は、記述するアドレスを指定するための数値で、1ならば代表メールアドレス、2ならば事務局、3ならば...というように複数の指定が可能になっています。
 なお、javascriptをoffにしているユーザーへの対応として画像での表示を付け加えています。

  (htmlファイル:)
メール送信は、
<script type="text/javascript">
<!--
fnMailTo(1);
//-->
</script>
まで
</script>
<noscript>
<img src="gif/email_s1.gif" alt="Email" style="border="0" />
</noscript>

■javascriptによるメールアドレスのエンコード

 外部jsファイルに記述されるメールアドレスのエンコードの例です。

  • 「引数t」により、記述されるメールアドレスが変わります。
  • メールアドレスのエンコード(下記のスクリプトの数値の羅列で示された部分)は、前述のサイトでメールアドレスを変換したコードを転記します。

  (外部jsファイル:js_mailto.js)
function fnMailTo(t){
  var m="",f="",strAdd="";

  switch(t){
    case 1: //代表アドレス
      f=String.fromCharCode(96,97,98,99,100,101,63)+String.fromCharCode(119,120,121,45,98,110,108);
      break;
    case 2: //事務局用アドレス
      f=String.fromCharCode(96,97,98,99,100,101,49,63)+String.fromCharCode(119,120,121,45,98,110,108);
      break;
     ... ...
     ... ...
bsp; }

  for(var i=0;i<f.length;i++){
    m=f.charCodeAt(i);
    strAdd +=String.fromCharCode(m+1);
  }

  document.write("<a href=\"mai" + "lto:" + strAdd + "\" title=' クリックすると宛て先を[" + strAdd + "]としてデフォルト設定のメーラーが開きます。' >" + strAdd + "</a>");
}

 javascriptを実際に適用してみる

■javascriptを実行

 実際に上記のスクリプトを適用してみます。アドレス表示部分をクリックすると、そのアドレスを宛て先として、あなたのパソコンのデフォルトのメーラーが開くはずです。
 本ページをソース表示しても、どこにもメールアドレスの記述がないことが判りますか。

  • メール送信は、 まで
  • メール送信は、 まで
        (※メールアドレスは模擬的なものなので、試験的にメールを送らないで下さい。)

■実際のサイトへの応用方法

 通常、ひとつのサイトに共通に使用するjsファイルに上記スクリプトを記述しておき、サイト内のどのページからでもそのスクリプトにアクセスできるようにしておきます。メールアドレスが変更されても、そのファイルを変更するだけですみますからメンテナンスも楽になります。

 おまけ

■まずは「お断り」から

 上記の方法が100%確実なものであるとか、今後も完全なるものである、という保証はどこにもありません。技術は技術によって乗り越えられるもの。裏の裏をかきたがるやつってのは、世の中に沢山いるのです。最悪の場合、メールアドレスを変更する、ということも考慮しながら適用して下さい。

■メールアドレス失敗談、など

 ちゃんとした有名企業のサイト。これまたマニアの間では有名なソフトのダウンロードをした、と思って下さい。ダウンロード前に、ユーザー登録としてメールアレドスを入力し、そのメールアドレスに事前に送られたIDとパスワードを用いてソフトがダウンロードできる、という標準的な手法でした。

 ところがです。その日からいくらもたたないうちに、英文スパムの波・波・波。「バイアグラ○○ドル」だの、とにかくすごい。ウィルス付メールまで送りつけられています。セキュリティソフトやメーラーのスパムフィルターも確実ではなく、むしろ、正常なメールがスパム認定されてしまう方の問題も頻発しています。

 その有名企業の中か外か、どのようにメールアドレスが外部流出したかどうかはさておき、こんなとき使用するメールアドレスは、いつでも変更できるようなアドレス(例えばネット上で無料で作れるアドレス等)を用いることをお勧めする次第です。まあ、こんなサイトを覗いている皆様ならメールアドレスの十や二十は日常的にお使いでしょうし、いつでも自由にメールアドレスが作れてしまう方ばかりでしょうけど(^^)


PageTop
【更新記録】
※(2007.05.27) v1.01 一般公開しました。
【AccessCounter】 
アクセスカウンター
※本ページの記載内容を充分理解の上、ご使用下さい。使用されたことにより不利益等が発生しても一切の責任を負いません。
※本ページはA4サイズの用紙に印刷できるようになっていますが、右側がはみ出す場合は、ブラウザで余白の設定を行って下さい。
※印刷時、ナビゲーション用リンク文字やボタン、表示説明用エリア等は印刷されません。
※印刷設定が「背景を印刷」するになっていないと、背景として設定されている画像は印刷されません。
Copyright(C) 2007 web工房 All Rights Reserved.
  URI:http://www.webstudio.jp/