mailto リンクで 宛先/CC/BCC/件名/本文 を指定 (JavaScript サンプルあり)
はじめに
mailto
スキームについて調べたので、mailto
リンクを使って 宛先(To)/CC/BCC/件名(Subject)/本文 を指定する方法を簡単に整理した。
TL;DR
cc
,bcc
,subject
,body
で CC/BCC/件名/本文 を設定可能- 複数宛先は
,
区切り - 改行などは URL エンコード
- 複数宛先は
- JS なら
new URL('mailto:to@example.com')
を使うと楽cc
などはsearchParams.set()
で設定toString()
でエンコードもやってくれる
- 過度なデータの埋め込みには注意(最大長を超過するかも)
目次
詳細
mailto で指定可能な項目
項目 | 指定方法 | 補足 |
---|---|---|
宛先(To) | mailto: 直後に指定 |
, (カンマ)区切りで複数指定可能 |
CC | cc= で指定 |
, (カンマ)区切りで複数指定可能 |
BCC | bcc= で指定 |
, (カンマ)区切りで複数指定可能 |
件名(Subject) | subject= で指定 |
空白、日本語などは URL エンコードが必要 |
本文 | body= で指定 |
空白、改行、日本語などは URL エンコードが必要 |
設定例
全部乗せ
項目 | 指定内容 | 補足 |
---|---|---|
宛先(To) | to1@example.com と to2@example.com |
|
CC | cc1@example.com と cc2@example.com |
|
BCC | bcc1@example.com と bcc2@example.com |
|
件名(Subject) | mySubject |
|
本文 | hello world |
改行あり |
コード
1 | <a href="mailto:to1@example.com,to2@example.com?cc=cc1@example.com,cc2@example.com&bcc=bcc1@example.com,bcc2@example.com&subject=mySubject&body=hello%0D%0Aworld">mail example</a> |
宛先(To)
1 | <a href="mailto:to1@example.com">mail example</a> |
CC
1 | <a href="mailto:to1@example.com?cc=cc1@example.com">mail example</a> |
BCC
1 | <a href="mailto:to1@example.com?bcc=bcc1@example.com">mail example</a> |
件名(Subject)
1 | <a href="mailto:to1@example.com?subject=mySubject">mail example</a> |
本文
1 | <a href="mailto:to1@example.com?body=hello%0D%0Aworld">mail example</a> |
JS で簡単に指定
JavaScript で mailto
リンクを作りたい場合、URL
インターフェイスを使うのが楽。(実は mailto
プロトコル(スキーム)も処理できる)
cc
, bcc
, subject
, body
はクエリパラメータとして searchParams.set()
で設定すれば良い。送信先だけは mailto:
直後に指定が必要なので new URL()
の段階で指定しておく。
最後に toString()
で出力すれば、日本語などもエンコードされて mailto:...
形式で出力できる。
1 | const to = ['to1@example.com', 'to2@example.com']; |
上記の toString()
出力結果を使ったリンクが以下。
IE を無視して良ければ URL
でやるのが簡単。
ブラウザーの互換性 より引用
その他・メモ
GUI で簡単に作れるツール Mailtolink
Mailtolink.me | The Mailto Link Generator
最大長
ブラウザ、メールクライアントによって最大何文字まで使えるかが変わってくる模様。少し古いが以下ページが参考になる。
※あくまで簡単なテンプレ程度にとどめておいて、極端に長大な内容を詰め込むのはやめた方が良さそう。
firefox - MAILTO max-length of each internet browsers? - Stack Overflow
まとめ
cc
,bcc
,subject
,body
で CC/BCC/件名/本文 を設定可能- 複数宛先は
,
区切り - 改行などは URL エンコード
- 複数宛先は
- JS なら
new URL('mailto:to@example.com')
を使うと楽cc
などはsearchParams.set()
で設定toString()
でエンコードもやってくれる
- 過度なデータの埋め込みには注意(最大長を超過するかも)
参考文献
- mailto - Wikipedia
- email tips and tricks for the mailto tag and html forms for your website* html - Can I set subject/content of email using mailto:? - Stack Overflow
- html - Can I set subject/content of email using mailto:? - Stack Overflow
- firefox - MAILTO max-length of each internet browsers? - Stack Overflow
- URL - Web API | MDN
- メールアドレスを指定できるmailtoリンクの設定方法や便利なスクリプト | Webクリエイターボックス
関連記事
- jQuery Select2 で、初期値の設定と選択状態のクリア
- JavaScript で画像をローカルにダウンロード
- JavaScript で複数画像を zip に圧縮してローカルにダウンロード
- HTML img タグで画像が 404 エラーのときに代替画像を表示する方法
- Chart.js(vue-chartjs) でツールチップの表示内容を変更
- Vue.js で日本語変換での誤発火を抑止しつつ Enter キーで Submit
- JavaScript で URL のクエリパラメータを操作する方法
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)