SendGridのAPIのバージョン変更に伴う不達
送信できない
結局なんでもそうなのだが、現状動いていると言う事にかまけていると気が付かなくなる事の方が多い。
今回も前々から告知は出ていたみたいだが、SendGridの古いAPIのバージョンでメールが送信出来なくなる事象が発生した。
原因
どうやら、APIのメジャーな変更点としてそれまで使っていたIDパスワードは色んな意味で危険なのでAPIキーを発行してそれを認証に使ってね。と言う事らしい。
利用しているAPIはV2の物なので、V3とはちょっと違う。
変更点
SendGridのダッシュボードよりAPIキーの発行を行う。ユーザー名は何でも良い。APIキーは1回表示されるとその後再表示はないのでメモ。
それまでPOSTフィールドに入れていた username, passwordフィールドを削除
POSTフィールドにapi_user, api_keyを入れればそれで良し。
と思ったらBadRequestが先方から返ってくる。
リファレンス
docs.sendgrid.com
を参照すると、Bearerで送れとのこと。
Bearerってなヘッダを生成してPOSTする値にオプションとして持たせろと言う事らしい。
$apikey = "発行したAPIキー";
$header = array(
'Authorization: Bearer '.$apikey,
);
$session = curl_init($request);
curl_setopt($session, CURLOPT_HTTPHEADER, $header);
CURLOPT_HTTPHEADERに認証としてBearerでAPIキーを設定します。と言う宣言を入れるとsuccessになった。
兎に角SendGridはドキュメントが英語で使える人が使う
って事のみに特化しているので低価格なのだが、思わぬアクシデントで対応が出来るエンジニアが居ないと結構怖い。