SendGrid APIを使ってメールを送信するプラグインを作ってみよう

フォローする

(著者:クローバ株式会社 門屋 亮

こんにちは。クローバの門屋です。kintoneには通知機能が標準搭載されているので、普段メールを送信する機会はあまりないのですが、それでもレコードが登録されたときに kintoneのユーザー以外に通知する場合など、kintone からメールを送信したいという要望はあると思います。 今回はプラグインを使って、セキュアにメールを送信する方法について説明します。

SendGridのアカウントを申し込む

kintoneにはメールを送信する機能がありませんので、外部のサービスを利用してメールを送信する必要があります。
今回はSendGridを使うことにしました。SendGridはアメリカのEメール配信に特化したクラウドサービスで、日本では構造計画研究所がローカライズを行っています。国内でも有名なクラウドベンダーがSendGridを利用していることで知られています。基本的には有料のサービスですが、月に12,000通のメール送信までは無料で利用することができます。

https://sendgrid.kke.co.jp/

新規会員登録ページから、アカウントの登録を行います。プランはまずはFreeプランを選択してください。
※2015年10月時点で、登録には審査があるようです。情報は正確に入力してください。

APIキーを取得する

登録が完了すると、ダッシュボードにログインすることができます。「SETTING」メニューから、「API Keys」をクリックしてAPIキーの設定画面を開きます。

Create API Keyをクリックして新しいAPIキーを作成します。名前はなんでもよいのですが、ここではkintoneとしておきます。生成されたAPIキーはあとで使います。

これでSendGrid側の準備は完了です。

プラグイン作成の準備

今回はプラグインを作成してkintone からメールを送信します。なぜプラグインを作成するかというと、kintone のカスタマイズはJavaScriptを使用するため、ブラウザからSendGridのAPIキーが見えてしまう危険性があるためです。プラグインを利用すると、ブラウザとSendGrid との通信をkintone が中継する際に、kintone 側でヘッダーやデータに任意の情報を付加することができます。これにより、SendGridのAPIキーをkintoneの利用者に知られてしまうことがなくります。

kintone プラグインの基本的な開発の手順については公開されているドキュメントを参照してください。

https://cybozudev.zendesk.com/hc/ja/categories/200219390

ファイル構成

manifest.json

設定画面の実装

SendGridのAPIキーを設定する設定画面を実装します。

config.html

config.js

ここで注目していただきたいのが、kintone.plugin.app.setProxyConfig()メソッドを呼びだしている部分です。SendGridのAPIではAuthorizationヘッダにAPIキーを乗せて認証を行う仕様になっています。kintone.plugin.app.setProxyConfig()を実行して、指定したSendGridのURLとPOSTメソッドによるプロクシ通信で Authorizationヘッダを付与しています。 kintone.plugin.app.setProxyConfigの詳しい仕様については、公開されているドキュメントを参照してください。

https://cybozudev.zendesk.com/hc/ja/articles/203661160

ユーザー画面の実装

ユーザー画面では、SendGridのAPI呼び出しをラップした新しいメソッドを作成します。 SendGridのAPI仕様は以下のようになっています。

https://sendgrid.kke.co.jp/docs/API_Reference/Web_API/mail.html

例)

POST https://api.sendgrid.com/api/mail.send.json
POST Data api_user=your_sendgrid_username&api_key=your_sendgrid_password&to=destination@example.com&toname=Destination&subject=Example_Subject&text=testingtextbody&from=info@domain.com

※今回はAPIキーを使用するため、api_userとapi_keyを指定する必要はありません。

desktop.js

パッケージの作成

プラグインSDKを使用して、プラグインのパッケージを作成します。 作成したパッケージはこちらです。

sendgrid_plugin.zip

プラグインの実行

プラグインをアプリにインストールして設定画面を開くと、このようになります。

APIキーを入力してOKボタンをクリックすると、APIキーが保存されます。 実際には、以下のようなカスタマイズJSから利用することを想定しています。

カスタマイズJS

レコードを保存すると、指定したアドレスにメールが送信されます。kintoneのレコードから送信先のアドレスを指定するといった応用が可能です。
いかがでしたでしょうか。プラグインの開発は敷居が高いように思われるかもしれませんが、1度やってみるとそれほど難しいものではありません。プラグイン開発で不明な点がありましたら、developer networkで質問してみてください!

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

ログインしてコメントを残してください。
Powered by Zendesk