mailtoは、電子メールアドレス用のURI( Uniform Resource Identifier)スキームです。これは、ウェブサイト上でハイパーリンクを作成するために使用され、ユーザーはHTMLドキュメントから直接特定のアドレスにメールを送信できます。これにより、メールクライアントにコピーして入力する必要がなくなります。
これは元々 、1994年12月のRequest for Comments (RFC) 1738で定義され[ 1 ] 、 1998年7月のRFC 2368で拡張され[ 2 ] 、 2010年10月のRFC 6068で改良されました[ 3 ]。
mailto URIは、スキームmailto:と、カンマで区切られた0個、1個、またはそれ以上の受信者アドレスで構成されます。さらに、ccやなどのメールヘッダーを、メールのクエリコンポーネントに属性と値のペアsubjectとして追加することもできます。
電子メールアドレスのローカル部分とヘッダー値にはパーセントエンコーディングを使用する必要があります。アドレスのドメイン部分もパーセントエンコーディングを使用してエンコードできますが、レガシーソフトウェアとの相互運用性のためにはIDNAエンコーディングの使用が推奨されます。[ 3 ]
HTMLドキュメント内で「mailto」を使用すると、メール送信用のリンクを生成できます。
<a href="mailto:someone@example.com">メールを送信</a>ハイパーリンクをクリックすると、デフォルトのメールクライアントが自動的に開き、宛先メールアドレスがあらかじめ入力された状態で起動します。
URL では、ヘッダー (件名、CC など) とメッセージ本文の初期値を指定できます。空白、キャリッジリターン、ラインフィードは直接埋め込むことはできませんが、パーセントエンコードする必要があります。[ 4 ]
<a href="mailto:someone@example.com?subject=This%20is%20the%20subject&cc=someone_else@example.com&body=This%20is%20the%20body">メールを送信</a>複数のアドレスを指定できます: [ 3 ]
<a href="mailto:someone@example.com,someoneelse@example.com">メールを送信</a>住所は省略可能です。
<a href="mailto:?subject=mailto%20with%20examples&body=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FMailto">この知識を共有しましょう ... </a>最初のヘッダーのみに疑問符を付けるようにしてください。それ以降のヘッダーにはアンパサンドが必要です。この規則に従わない場合、このスキームはヘッダーをメールクライアントに正しくコピーしません。[ 5 ]
RFC 6068では、いくつかのセキュリティ上の問題が指摘されており、その一つがロボットによるアドレス収集です。HTMLページ内では、 DOM構造や正規表現などを用いた自動化された手段によってmailto構造が特定される可能性があります。このような手段で収集されたアドレスは、スパマーの大量メール配信リストに追加され、大量の迷惑メールを受け取ることになりかねません。
メールアドレスの収集を防ぐための対策として、アドレスの改ざんやJavaScriptを用いたアドレスの難読化など、mailtoリンクを強化する方法は存在するものの、高度な収集ロボットであればこれらの対策を回避できてしまう。CAPTCHAなどの「人間認証」によってアドレスを隔離するといった他の手法は、スパム対策において同様の課題を抱えるウェブフォームをはじめとする他の連絡手段と同等のセキュリティを提供する。