AndroidからSendGridを使ってみた

AndroidからSendGrid APIを使ってみたのでメモっときます。

SendGridについて

PaaS/SaaSの一種でEメールを扱うサービスです。SMTPによるメール配信サービス、受信メールをトリガとした処理の駆動、扱ったメールの統計・統計結果表示、マーケティングメールの配信管理などの機能があります。

今回やったこと

SendGridが提供するWeb APIとSMTP APIをAndroidアプリから行ってみました。やった内容としては、JavaでSendGridを利用したメール送信と同じです。
要は、
・JavaMailを使ってSMTP APIを利用。
sendgrid4jを使って基本的なWeb APIを利用。
と、これだけです。
具体的には、JavaでSendGridを利用したメール送信と同じなのでそちらを参照していただければと思います。以上でした。
で、終わってしまうのはアレなので普通のJavaと違った点のみ絞って書きます。

ソース

とりあえず、この辺に置いときます。
尚、動かす場合、HelloSendGrid.java内のSMTP_AUTH_U
SER、SMTP_AUTH_PWD、SENDER_ADDRESS、RECIPIENT_ADDRESSあたりをそれぞれ置き換えます。



依存関係

こんな感じ。合計約1.5MB。2,3年前だったらデカめな印象でしたがイマドキ特にデカくはないですよね。

Java環境との違い

いずれもSendGridを使うための特別な事項はありません。ただ、ちょっとだけ事情が異なる点だけ。

Oracle提供のJavaMailは使えない

AndroidではOracle提供のいわゆるJavaMailは使えません。理由は、awtに依存しているためです。そういうわけで、javamail-androidを使います。基本的に両者のI/Fは同じみたいなのでjarファイルを入れ替えてあげるだけで動きました。

認証情報の扱いに注意が必要

今回のサンプルアプリケーションでは、SendGridの認証情報をコードの中に埋め込みましたが、一般に公開するAndroidアプリでこれをやるとSendGridの認証情報が簡単に漏れるので注意が必要です。別途、認証情報を提供するWebサービスなどを立ててアプリの中に認証情報は埋め込まないようにする等の対策を必要に応じてとった方がよいです。

使ってみての感想

IntentでGmailアプリと連携した場合との比較

AndroidアプリからEメールを送ろうと思ったとき、一番手っ取り早いのは、Intent経由でGmailなどのメールクライアントに投げてしまうことです。単純に外部にメールを送るだけであればこれでとりあえず問題はないですが、必ずメールアプリのUIを一旦挟む必要があるので、慣れていないユーザには若干不親切です。また、ただメールを送るだけなので、メールをトリガとして何かしようと思うといろいろと仕掛けが必要です。
SendGridのようなサービスを利用すると直接メールを送ることができ、メールにトリガのキーを埋め込めるのでいろいろとカスタマイズができそうです。

SMTPサーバを立てる必要がない

他のEメール系サービスも同様ですが、サーバを立てなくても簡単にメール配信環境を手に入れることができるというのは、とりあえず試してみたいという場合には効果的です。

CategoriesとUnique Argumentsが応用範囲広そう

いずれも、SMTP API、Web APIで利用できる機能です。
Categoriesは送信するメールに設定しておくと後でメールの統計に使えます。
Unique Argumentsは任意のK/Vをパラメータとしてメールに設定でき、Event APIに対するパラメータとして利用できます。

sendgrid4jはSendGridの全APIに対応しているわけではない

sendgrid4jはSendGrid公式のライブラリではありません。それでも、公式のJavaライブラリより高機能でサポートしているAPIの範囲が広く一般的にはこの機能だけでも十分使えます。それでも、全APIに対応しているわけではないので、範囲外のことをやろうと思ったらこのライブラリを拡張するなどする必要があります。ソースコードも公開されているのでわりと簡単に拡張できそうです。

また機会があればもう少し個々の機能を掘り下げてみようと思います。




コメント

このブログの人気の投稿

Execノードを使う

Joinノードを使う(その4)

SendGridのX-SMTPAPIヘッダの使い方(Section Tags、Substitution Tags編)