AWSのSESというメール配信サービスが気になったので、force.comのApexから動かしてみた。

 

・コンソールから送る方式

・SMTP方式

・HTTPS方式

の3つがあって、自動配信とかそういうのやる場合はプログラムでSMTP or HTTPS方式でやるみたい。

 

ApexからSMTPは不可能なので、HTTPS方式で、メール送る処理だけ書いてみた。

 

上記の場合はPOSTでやっているけどGETでもOK。

HTTPリクエストヘッダには以下の内容を入れる。

・Date

→いつものDateヘッダーの値(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.18

・Content-Type

→”application/x-www-form-urlencoded”の固定値

・Content-Length

→いつもの通り、Bodyの長さ

・X-Amzn-Authorization

→Dateヘッダーの値のハッシュ値(HmacSha1 or HmaxSha256)のBase64エンコード値

 

GETの場合はContent-LengthとかContent-Typeはいらないっす。

サンプル読むとGETのURLパラメータにAlgorithmとかSignatureとか含めちゃってて、

URLパラメータだけでいけんのかなーと思って検証してみたけど、うまくいきませんでした…。

 

S3のSignature生成とかよりは遥かに楽で、

Apexからのメール送信が一日1000件だったり、

WFメールが1000*[SalesforceユーザとかPlatformユーザとかのユーザ数]と

制限が厳しいSalesforceにとっては1000件あたり10円と格安の従量課金で

呼び出しも簡単で、うまくマッチしそうな感じ。

ガバナにさえ気をつければバッチで自動的にメール配信なんかも出来なくは無さそう。

 

SMTP方式もいける(っていうかSES自体がSMTPサーバ扱い?)ので、

メールサーバ立てずにバンバンメール送れるっていうのも良いなって思う。