Edited at

SendGridを用いてNode-REDからメールを送信する手順

More than 1 year has passed since last update.

今回は、メール配信サービスであるSendGridを用いてNode-REDのフローからメールを送信してみます。紹介するSendGridノードは、e-mailノードでメールが上手く送信できない時の代替手段として用いると便利です。


問題点: メール送信は挫折ポイントが沢山ある

クラウド上でメール送信をしようとする時、インフラに詳しい方だとメールサーバを自前で立てたり、クライアントプログラムから外部のメールサーバをアクセスしたり、考えることもあります。しかし実際にクラウド上でメール送信をしてみると、上手くいかないことがよくあります。これはクラウド上ではIPアドレスが再利用されたり、海外のデータセンタなど遠距離から接続したりすることが原因で、通常のメール送信操作と挙動と異なるため、スパムや乗っ取りと判定されてしまうためです。クラウド上のNode-REDにおいても、e-mailノードで上手くメール送信できない経験をした方は多いと思います。


解決策: SendGridノードを用いたメール送信

本問題を解決できるのがSendGridというメール配信サービスです。このサービスはAPI経由でメール送信でき、メールを受信者に正しく届くかはSendGrid側が保証してくれます。そのため、手軽に確実にメールを送信することができます。このSendGridをNode-REDで利用するにはnode-red-contrib-sendgridというノードを用います。本ノートはe-mailノードとほぼ同じ仕様であるため、e-mailノードを置き換えるのみで動作します。


SendGridノードを用いたメール送信手順

以降で具体的なメール送信手順について説明します。今回はSendGridとNode-REDの両方のサービスを提供しているさくらのクラウドを用います(Bluemixも同様の手順となります)。

さくらのクラウド上にNode-REDインスタンスを作成する方法は、以下のページで説明されています。最初に手順に従ってNode-REDインスタンスを作成します。

「さくらのクラウドのスタートアップスクリプトでNode-REDをインストールするメモ」

https://www.1ft-seabass.jp/memo/2017/08/25/sakura-cloud-node-red-install/

次にNode-REDのフローエディタに入り、「メニュー」->「パレットの管理」->「ノードの追加」と移動します。検索窓にキーワードとしてnode-red-contrib-sendgridと入力すると、SendGridノードが登場するため、「ノードを追加」をクリックしてインストールします。

15.png

インストールが完了すると、左側パレットのソーシャルグループの中にSendGridノードが登場しましたね!

16.1.png

前述の様にSendGridノードは、e-mailノードとほぼ同じ仕様であり、msg.payloadにメール本文、msg.topicに件名を指定します。ここでは、最もシンブルなinjectノードとSendGridノードを組み合わせたフローを作成してみます。

19.png

まずパレットからinjectノードとSendGridノードを配置し、ワイヤーでつなぎます。次にSendGridノードをダブルクリックし、プロパティ画面にSendGridのAPIキー、送信元メールアドレス、送信先メールアドレスの3つを入力します。

18.png

APIキーはSendGridの管理画面から取得します。管理画面に入った後、メニューの「Settings」->「API Keys」を選択します。

16.5.png

その後、右上に現れる「Create API Key」ボタンをクリックします。

17.png

APIキーの名前を入力して「Create & View」ボタンをクリックすると、APIキーが生成されます。APIキーをクリップボードへコピーし、SendGridノードのプロパティ画面のAPI Keyの部分に貼り付けましょう。

17.2.png

17.3.png

最後にinjectノードのボタンをクリックし、正しくメールが送信できるか確認してみます。

20.png

送信先のメールボックスを見ると、正しくメールが届いていることを確認できました!

無題.png

これで、クラウドからメールを確実に送信できるようになりますね。