目次 | CGIレスキュー | 免責・問合
  CGIでエンティティコード化

(株)友林堂
(株)友林堂


メールアドレスを自動収拾されにくくする

Webに公開されているメールアドレスを自動的に収拾するロボットによって被る迷惑メール。 まぁ、それだけが原因ではありませんが、少なくとも自動収拾により拾われにくくする方法がエンティティコード化です。 ここでは10進法のアスキーコード(コード番号127以内で)を使う方法で進めます。 16進法では古いブラウザでは表示できないそうです。

<a href="mailto:test@mail.host">メール送信</a> → <a href="mailto:test&#64;mail.host">メール送信</a>

上記のようにアットマーク(@)を &#64; と書き換えるだけでも、そのまんま書くよりはいいと思います。
次のように全部をCGIを使ってコード化してしまう方法を解説します。こんな風に…

<a href="&#109;&#97;&#105;&#108;&#116;&#111;:&#116;&#101;&#115;
&#116;&#64;&#109;&#97;&#105;&#108;&#46;&#104;&#111;&#115;&#116;">
メール送信</a>

たぶんこれでいいと思うんですが…。変換できるのはアスキーコード番号32〜126までの文字に限る簡易なものです。
s/([-\w.]|[\s\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\?\@\[\\\]\^\_\`\{\|\}\~])/'&#'.unpack('C2',$1).';'/eg;

もっと強力に!

コメント内に入れてしまう(JavaScript利用)ことで、さらに識別しにくくする方法もあるようです。write()文は1行で。 mai と lto を分けたのは、"mailto"という文字に反応させないため。

<Script language="JavaScript">
<!--
document.write('<a href="mai' + 'lto:&#109;&#97;&#105;&#108;&#116;&#111;:&#116;&#101;&#115;
&#116;&#64;&#109;&#97;&#105;&#108;&#46;&#104;&#111;&#115;&#116;">メール送信</a>');
// -->
</Script>


※10進法のアスキーコード番号32〜126までの文字の変換のみ。
※結果をご利用になることは構いませんが、その結果によって生じたトラブル等は責任を負いません。
メール送信
<a href="mailto:メールアドレス">メール送信</a>

メール送信
<a href="mailto:メールアドレス?subject=題名&body=本文">メール送信</a>

メール送信
<a href="mailto:メールアドレス?subject=題名&body=本文1%0D%0A本文2">メール送信</a>

※以下に示す文字を並べてはいけません。使いたい場合は下記変換文字を利用します。

対象変換文字備考
改行%0D%0A題名には使わない
半角スペース%20 
半角 +%2b 
半角 %%25 
半角 &%26 
半角 "%22 
全角スペース%81%40なるべく変換文字を使う
半角 #%23なるべく変換文字を使う

(参考) JavaScriptで
http://hp.vector.co.jp/authors/VA022023/javascript/make_html_entity-ja.htm

(参考) パソコンソフトで
http://ab.jpn.ph/soft/

(参考) アスキーコード表
http://www.shibu.jp/cppreference/ascii.html


Powered by CGI RESCUE(R)