Integromatを使って無料のメールフォームを作る

Integromatを使って無料のメールフォームを作る:

コーポレートサイトとかによくあるメールフォーム。

動的サイトならまだいいけど、静的サイトでこれだけのためにサーバ建てるのとてもしんどい。

Netlifyでもメールフォームのサービスがあるけど無料だと月100件しか送れない。

JSのみでメール送信をする方法はいくつか見つけたけどセキュリティ的に怪しそうだったりめんどくさそうなものが多い。

JSでRESTを叩いてメールを送りたい。的なやつです。


Integromatとは?

Webサービス連携ツール。

IFTTT的なもの。

TriggerとActionを決められて、何が起こったら何をする。っていうことを決められる。

IntegromatはTriggerによってActionの分岐とかもできるらしい。

今回は使わないけど、詳しく設定すればメールフィルター的なこともできそう。

無料では

* オペレーション実行回数が 1,000回/月

* シナリオ作成個数無制限

オペレーション実行という単位はサービスの実行回数やプルの単位(ポーリングをするなら)。


Webhookで受けてメール送信する場合は毎回二回ずつサービスを呼び出すため、月500件無料でメールが送れる(はず)。

今回はWebhookのTriggerとMailのActionを使う。


一連の流れ



image.png


  1. ユーザがメールフォームに入力して送信ボタンを押す。
  2. FetchAPIでIntegromatのWebhookを呼び出す。
  3. Integromatのシナリオが動き、メールを送信する。


作ってみる


Integromatを設定する。

image.png

右上の「Create a new scenario」からシナリオを作る。



image.png


EmailとWebhookを選択する。



image.png


こんな感じの画面になるので、クリックしてWebhook→Trigger→Custom Webhookを追加



image.png


Addを押して、適当に名前を付ける。ホワイトリストでIP制限をかけることもできる。



image.png


Webhookのアドレスが表示されるのでパラメータ入りでPOSTしてみる。

ここでどんなパラメータがあるかを覚えさせて、それをもとにあとでメールの本文を作ることが出来る。

例えば、名前とアドレスと内容のシンプルなメールフォームであれば

curl http://XXX -X POST -H "Content-Type: application/json" -d '{"name": "7tsuno","email": "test@test.test","content": "お問い合わせ内容"}' 
こんな感じで。



image.png


成功すると、Successfuly determinedになる。



image.png


右のぽこってしてるところからAdd another moduleを押してモジュールを追加する。

Email→Action→Send an Emailを追加



image.png

image.png


Connection→Addから、Connection typeを選択。

送信元にGmailを使う場合はGoogle, SMTPサーバを使う場合はOtherにしていろいろ設定する。

Googleにした場合は送信元となるアドレスをOAuth認証させる。



image.png


To,Subject,Content等を設定する。Webhookで得たパラメータを利用することが出来る。

Webhookで得たアドレスをToに入れれば自動返信メールとかも作れるはず。

設定が終わったら左下のRun Onceを押して、もう一回curlしてみる。

メールが届いていることが分かる。



image.png


左下のスイッチをONにしてSave

これでIntegromat側の設定は完了


JSで送信

fetch APIを使って送信する。

const obj = {"name": "7tsuno","email": "test@test.test","content": "お問い合わせ内容"}; 
const method = "POST"; 
const body = JSON.stringify(obj); 
const headers = { 
  'Accept': 'application/json', 
  'Content-Type': 'application/json' 
}; 
fetch("https://XXX", {method, headers, body}).catch(console.error); 
IEはfetch未対応なのでpolyfillを使う。

Reactで作った簡単なFormをGithubに上げてみたので参考に!
https://github.com/7tsuno/integromat-mail



image.png


コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)