Mashup AwardsのTechblog 寄稿第三弾は、SendGridの佐藤さんより「Webの世界と親和性の高いメールAPI」というタイトルで頂きました。
佐藤さんいわく「MAではメールが正しく届くことはもとより、いかに使いやすいサービスか、ということが重要なポイントではないか」というお考えのもと、今回は数あるSendGridの機能のうち、ハッカソンでよく使われる機能についてできるだけ具体的な手順を交えつつ解説していただいております。
応募は終わりましたが、今から作品に機能追加することも可能ですよー。
こんにちは、構造計画研究所 佐藤と申します。
今回はMA:Techblogの場をお借りしてSendGridの紹介をいたします。SendGridを使うとWebの世界と親和性の高いメール送受信環境を簡単に構築することができます。アプリケーションにメール機能が必要な場合は是非お試しください。
SendGridとは
SendGridはクラウドベースのメールインフラストラクチャーです。メールはWebと同様、インターネットの世界では古い技術ですが、システムから人にリーチするための手段として重要な役割を果たしています。しかし、実際の運用ではサーバを立てればメールが届く、という単純な話ではなく、迷惑メール対策、バウンス処理、レピュテーション管理など、メールを届けるためには多くのハードルを乗り越える必要があります。SendGridを利用すると、そういった面倒なことを一切考える必要がなくなります。
今回ご紹介する内容
Mashup Awardsのような開発コンテストや、その予選となるハッカソンでは、メールが正しく届くことはもとより、いかに使いやすいサービスか、ということが重要なポイントではないかと思います。
そこで今回は数あるSendGridの機能のうち、ハッカソンでよく使われる機能についてできるだけ具体的な手順を交えつつ解説したいと思います。
- メール送信
- メールに関連するイベントの取得
- アプリケーションでメールを受信
アカウントの取得
まず、SendGridのアカウントを用意します。詳しい手順はこちらをご覧ください。Freeプランは1日400通まで無料でメール送信ができます。クレジットカードの登録も不要です。
アカウントの発行にあたって審査(弊社営業時間のみ対応)が入りますので、土日のハッカソンで使いたいといった場合は事前にアカウントを取得しておくことをオススメします。
メール送信
アプリケーションから通知メールなどを送信する場合にはこの機能を利用します。SendGridではSMTPもしくはWeb APIでメールを送信できますが、Web APIが最も簡単な方法です。代表的な送信手順をいくつかご紹介します。
API Workshopで送る
一刻も早くメールを送信したい場合は、SendGridの公式ドキュメントのAPI Workshop(”Try It”ボタンのこと)を試してみてください。ブラウザからすぐにメールを送信できます。詳しい操作方法についてはこちらをご覧ください。
curlで送る
コマンドラインからメールを送るのであれば、curlコマンドが簡単です。
[code language=”text”]
curl -X POST https://api.sendgrid.com/api/mail.send.json -d api_user=[ユーザ名] -d api_key=[パスワード] -d to=recipient@test.com -d subject=こんにちは -d text=SendGrid -d from=sender@test.com
[/code]
toとfromは宛先アドレスと送信元アドレスです。api_userとapi_keyはそれぞれユーザ名とパスワードです。ご自身の環境に合わせて置き換えてください。
htmlメールを送りたい場合、htmlパラメータを利用してください。その他のパラメータの説明についてはドキュメントをご覧ください。
プログラムから送る
プログラミング言語が決まっている場合は、SendGridが各言語向けに提供している公式ライブラリの利用をオススメします。すぐ動かせるサンプルコードも公開していますので参考にしてください。
メールに関連するイベントの取得
SendGridを経由して送信されたメール本文内のURLがクリックされたり、メールが開封されたタイミングでアプリケーション側の処理を実行したい場合、Event Webhook機能を利用します。この機能はあらかじめ指定したURLにイベントの内容をPOSTする機能です。
取得できるイベントの種類はたくさんありますが、よく使われるのがOpen(開封)とClick(クリック)です。
これらのイベントを取得する設定について順を追って説明していきます。
Open/Click Tracking機能の有効化
SendGridのWebポータルでSETTINGS>Trackingを選択し、Open TrackingとClick TrackingをACTIVEにします。
Event Notificationの設定
同じくSETTINGS>Mail Settingsを選択し、Event NotificationをACTIVEにします。
「edit」を選択して、HTTP POST URLにPOST先のWebアプリケーションのURL(後述)を設定します。SELECT ACTIONSはOpenedとClickedにチェックが入っていることを確認します。
イベントを受け取るためのWebアプリケーションを用意する必要があるので、若干ハードルが高そうに感じられるかもしれませんが、簡単に利用できるよう様々な方法をご紹介しています。
最後に画面右上の✔マークを選択して編集を完了します。
イベントの発行テスト
Event Notification画面で「Test Your Integration」ボタンを選択するとテスト的にイベントを発行できます。アプリケーション側でイベントが受信できることを確認したら設定完了です。
アプリケーションでメールを受信
SendGridはメールを送信するだけでなく受信もできます。でも、SendGrid側でメールボックス機能を提供しているわけではないので、POP3やIMAPは使いません。ではどうするかというと、Parse Webhookという機能を利用してSendGridが受信したメールの内容を通知させます。この機能を利用することで、メール受信をトリガとしてアプリケーション側で処理を実行できます。もちろん添付ファイルも取得できます。代表的な利用例は空メール受信によるユーザ登録処理などです。
Inbound Parseの設定
Parse Webhook機能は、WebポータルのSETTINGS>Inbound Parseから設定を行います。「Add Host & URL」ボタンを選択してHOSTNAMEとURLを入力します。
- HOSTNAME
宛先メールアドレスのドメイン部分を入力します。受信メールをSendGrid側で処理するために、通常は宛先ドメインのDNSにMXレコードを登録する必要がありますが、SendGridが開発用に用意している「bymail.in」ドメインを利用するとこの手順を省くことができます。この場合、「sgxxxxxx.bymail.in」のようにサブドメインを付加したものを入力します。ここで付加するサブドメインは、一意なものであればなんでも構いませんが、ユーザ名の@より前の部分を利用するのが推奨です。 - URL
イベントを受信するWebアプリケーションのURLを入力します。Parse Webhook機能は、受信したメールの内容をmultipart/form-data形式で通知します。この形式はWebフォームからファイルを送信する際に使用される形式と同じです。POSTデータの内容やその他注意事項についてはドキュメントをご覧ください。
Parse Webhookも通知を受け取るためのWebアプリケーションを用意する必要がありますが、簡単に利用できるよう様々な方法をご紹介しています。
最後にSaveボタンを選択して設定を完了します。
メールの受信テスト
適当なメールクライアントから、先ほどHOSTNAMEに設定したドメインのメールアドレス(hoge@sgxxxxxx.bymail.in)宛にメールを送信します。この際、メールアドレスのローカルパートは何でも構いません。Parse Webhookにより受信したメールデータがWebアプリケーションにPOSTされると、その結果がWebポータルのACTIVITY上にParseイベントとして記録されます。Webアプリケーションからの応答もここで確認できます。
編集後記
今回はハッカソンなどでよく使用される機能に絞ってSendGridの代表的な機能をご紹介しました。メールインフラストラクチャーと言いながら、メールを送受信するのにSMTPやPOP3/IMAPを利用しなかったのにお気付きでしょうか?Webの世界から簡単にメールを扱えるのがSendGridの特徴の一つです。
SendGridはマッシュアップアワードにAPI提供をはじめて2年目になりました。毎回ハッカソンやアイデアソンで新しいアイデアが出てくるのを楽しみにしています。今後ともSendGridをどうぞよろしくお願いいたします。
関連する記事
-
応募方法|HL2022
ヒーローズ・リーグ 2022の応募方法!
2022.09.05 -
レッドハッカソン|MA2016
レッドハッカソンひろしま~テーマなし!面白いモノつくって東京へいこう~
2016.08.30 -
LINE BOTawards
LINE BOTを使ったアイデアソン@名古屋〜LINE BOT AWARDS〜
2016.12.15