プロバイダやレンタルのメールデコードサービス(メールフォーム)で、htmlのなかに自分のメールアドレスを書くタイプのものがありますね。niftyや、私も使っているぷららなどもそうです。
このタイプのフォーム、自分のメールアドレスがわかってしまうから使いたくないというかたも多いと思います。
サイトにアドレスを書かなくても受け取れるのがメールフォームの利点のひとつなのに、ソースを見ればわかってしまうというのでは、たしかに嬉しくないですね。
回避手段としては、メールアドレスをhtml内に書かなくていい他のレンタルサービス(私がよく紹介している
FormMailerなどもそのタイプです)や、フリー配布のCGIを使うという方法が考えられるのですが、「無料レンタルは広告が出てしまう」「機能に不満がある」「CGI設置は出来ないサーバーだ」など、アドレスの問題がなければプロバイダ提供サービスを使いたいという人もいるでしょう。
そこで、Javascriptを利用して「ソースを見られても、自分のアドレスを知られにくくする方法」を考えてみました。
※あくまでも「知られにくい方法」であって「絶対わからない方法」ではありません。
1.フォームのソースを全て外部Javascriptで書き出す。フォーム部分のソースをコピーして、テキストエディタに貼り付けます。(下記はぷらら提供のメールデコードの記述例をそのまま使っています)
document.write('<FORM METHOD="POST" ACTION="http://www6.plala.or.jp/cgi-bin5/mailsend.cgi">');
document.write('<INPUT TYPE="hidden" NAME="to" VALUE="youraddress@xxx.plala.or.jp">');
document.write('<INPUT TYPE="hidden" NAME="subject" VALUE="ホームページ感想">');
document.write('<TABLE>');
document.write('<TR>');
document.write('<TD>お名前</TD>');
document.write('<TD><INPUT TYPE="text" NAME="name" SIZE=30></TD>');
document.write('</TR>');
document.write('<TR>');
document.write('<TD>メールアドレス(必須)</TD>');
document.write('<TD><INPUT TYPE="text" NAME="from" SIZE=30></TD>');
document.write('</TR>');
document.write('<TR>');
document.write('<TD>コメント</TD>');
document.write('<TD> <TEXTAREA NAME="comment" ROWS=4 COLS=32> </TEXTAREA></TD>');
document.write('</TR>');
document.write('<TR>');
document.write('<TD><INPUT TYPE="submit" VALUE="送信"></TD>');
document.write('<TD><INPUT TYPE="reset" VALUE="クリア"></TD>');
document.write('</TR>');
document.write('</TABLE>');
document.write('</FORM>');
こんな感じで、1行ごとに
document.write('');で挟んでやり、そのファイルを拡張子jsで保存します。(例:
form.js)
続いて、html内のフォームを置いていた場所から、
<script type="text/javascript" src="form.js"></script><noscript>Javascriptでフォームを表示しています。</noscript>
のようにしてJavascriptを呼び出します。
これで、元のページのソースを見ただけでは送り先のアドレスがわからなくなりました。
ただし、Javascriptを無効にしている人にはメールフォームそのものが見えなくなっています。また、方法を知っている人なら簡単にform.jsの中身を見ることが出来ます。2.ダミーのアドレスを書いておき、送信時に正しいメールアドレスを書き込むソース内にはダミーのアドレスを書いておき、フォームの送信のタイミングで、正しいアドレスに書き換える方法です。
まず、テキストエディタに下記の関数を書いて、拡張子jsで保存します。
function SendCheck(Form) {
Form["to"].value = '正しいメールアドレス';
}
※["
to"]には、お使いのデコードサービスで、メールアドレスを記述する部分のname属性を入れます。ぷららですと「
to」(
http://www.plala.or.jp/access/community/phps/cgi_main.html参照)、@niftyだと「
to_mail」(
http://homepage.nifty.com/mail/sample.htm参照)等となります。
このjsファイルをフォームを置いたhtmlから呼び出します。呼び出し方は1を参照してください。head内でもbody内でも構いませんが、フォームのタグより先に書く必要があります。
続いて、メールフォームの<form>タグに
onsubmit="SendCheck(this)"と書き加えます。こんな感じです。
<FORM METHOD="POST" ACTION="http://www6.plala.or.jp/cgi-bin5/mailsend.cgi" onsubmit="SendCheck(this)">
この方法のメリットは、ぱっと見てアドレスを隠していることがわからないことですね。
SendCheck関数に、ついでに未入力チェックのスクリプトも一緒に仕込んでみたりすると更に効果的です。
ただし、この方法を使う場合、
Javascriptを無効にしている人が使うと、ダミーのアドレスにメールを送ろうとしてしまいます。でたらめなアドレスを書いてしまうと他人に迷惑をかけてしまう可能性があるので、知られても構わないフリーの別アドレスを入れておくか、空欄にしておくなど、工夫してください。
3.メールアドレスを暗号化する
これはすでにいろいろな場所で紹介されている方法なので、ここでは解説しません。検索してみてください。