お問い合わせフォームなどを作る際には、何らかのサーバーサイドの仕組みを用意するのが一般的です。JavaScriptからSMTPサーバーに直接接続できないため、サーバー側でフォームの入力値を受け取って、メールを送信します。
そうした手間を軽減できるのがEmailJSになります。メールサーバーとWebブラウザの間に立って、メール送信を仲介してくれます。
EmailJSの使い方

EmailJSは無料でも月200通まで送信できます。まずユーザー登録を行って、ログインするとダッシュボードが表示されます。
メールサーバーの設定
まず最初にメールサーバーの設定を行います。各種メールサービスや、メール配信サービスが用意されています。Customers Mail Cloudを利用する際にはSMTPサーバーを指定してください。

そしてSMTPサーバーの設定を行います。SMTPサーバーのアドレスやポート番号は以下の通りです。
| サービスプラン | SMTPホスト名 | ポート番号 |
|---|---|---|
| 無料トライアル | sandbox.smtps.jp | 10025 |
| Standard | te.smtps.jp | 10025 |
| Pro | SUBDOMAIN.smtps.jp (SUBDOMAINは各ユーザに割り当てたドメイン) | 10025 |
ユーザ名およびパスワードについて
API設定画面にて、APIユーザを作成します。アクセス権限として、SMTPは必須になります。API経由での配信を行う場合はSMTPに加えて、HTTP-APIも有効にしてください。

メールテンプレートの作成
続いてメールのテンプレートを作成します。このメールは常に指定したアドレス宛に届くので、自分宛を想定して作成します(自動返信設定も用意されています)。

テンプレートの置き換え文字列は {{〜}} という形になっています。この 〜 にはフォームの name 属性が入ります。
メール送信を試す
ではメールを送信してみます。今回はEmailJSで用意されているHTMLテンプレートを利用します。
<!DOCTYPE html>
<html>
<head>
<title>Contact Form</title>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@emailjs/browser@3/dist/email.min.js"></script>
<script type="text/javascript">
(function() {
// https://dashboard.emailjs.com/admin/account
emailjs.init('YOUR_PUBLIC_KEY');
})();
</script>
<script type="text/javascript">
window.onload = function() {
document.getElementById('contact-form').addEventListener('submit', function(event) {
event.preventDefault();
// generate a five digit number for the contact_number variable
this.contact_number.value = Math.random() * 100000 | 0;
// these IDs from the previous steps
emailjs.sendForm('EMAIL_SERVICE_ID', 'EMAIL_TEMPLATE_ID', this)
.then(function() {
console.log('SUCCESS!');
}, function(error) {
console.log('FAILED...', error);
});
});
}
</script>
</head>
<body>
<form id="contact-form">
<input type="hidden" name="contact_number">
<label>Name</label>
<input type="text" name="user_name">
<label>Email</label>
<input type="email" name="user_email">
<label>Message</label>
<textarea name="message"></textarea>
<input type="submit" value="Send">
</form>
</body>
</html>
この中の3つの文字列を置き換えます。
| キー | 内容 |
|---|---|
| YOUR_PUBLIC_KEY | https://dashboard.emailjs.com/admin/accountにて確認できるパブリックキーを設定します |
| EMAIL_SERVICE_ID | 作成したメール送信サービスのIDを設定します |
| EMAIL_TEMPLATE_ID | 作成したメールテンプレートのIDを設定します |
これで準備完了です。
送信する
実際に送信すると、開発者ツールのコンソールに SUCCESS! という文字列が出力されます。そうすれば送信は問題ありません。

他の画面
EmailJSの他の画面です。
メール履歴
メールの送信履歴が確認できます。

コンタクト一覧
送られてきたメールアドレスや名前をコンタクトとして保存できます。CSVで出力できるので、マーケティングツールなどに取り込めます。

グラフ
メールの送信成功、失敗を日ごとのグラフで確認できます。

まとめ
EmailJSを使うことで、サーバーレスでカスタマイズできるお問い合わせフォームを設置したり、メールを伴う処理をJavaScriptだけで実装できます。
メールの配信状況なども分析できるので、自分たちでサーバーサイドを組むよりも手軽ではないでしょうか。
