ASCIIで暗号化させたメールアドレスを埋め込む

お問い合わせは基本的にフォームを設置するのだけれど、仕様によってはメールアドレスを貼り付けるだけのものでお願いされるケースがある。
もちろん、以下のようにメールアドレスを貼り付けるだけでも対応できるのだが、スパムメールが来たりするので暗号化させる必要がある。

<a href="mail:to"></a>

ということで本題のメールアドレスを暗号化させてWebページ上に貼り付ける方法。
作りは至って単純で、あらかじめメールアドレスをASCIIに変換しておいて埋め込む。
表示するときは、ASCIIを変換してユーザーにわかるようにするだけ。

const secretAddress = () => {
    const ma = String.fromCharCode(123-22,90+30,102-5,92+17,117-5,90+18,122-21,38+26,128-27,90+30,121-24,85+24,141-29,103+5,130-29,28+18,120-9,102+12,119-16);
    const mt = String.fromCharCode(117-8,42+55,105-0,59+49,126-10,76+35,107-49);
    return { ma, mt }
}

const { ma, mt } = secretAddress();
console.log(ma); // example@example.org
console.log(mt); // mail:to

なお、こちらのサイトでコードは生成してくれるので貼り付けたい箇所に貼るだけ。

メールアドレスを数字列にしてJavaScriptで記述するソース生成ツール

アプリ開発のような外部から見えないものは別として、mail:toをWebサイトに埋め込むのは基本的にナンセンスな方法です。今だとメールサービスが豊富に存在しているのでGoogleのメールフォームを埋め込むのもアリだし、formrunのようなサービスを使用するのもよいでしょう。

参考リンク
スパム対策をしてメールアドレスを公開する方法

関連記事