Posted at

LaravelからSESでメール送信ができなかったときの確認項目

前回(AmazonSESを使ったメールの受信に苦労した話)に引き続き、SES関連のお話。

エラーメッセージはというと、SignatureDoesNotMatchということで、認証できていないかんじ。

configファイルもenvファイルも何度も何度も見直したけど、正しい値を入れている自信はあった。

(実際には間違っていたから送信できなかった。)

Aws/Ses/Exception/SesException with message 'Error executing "SendRawEmail" on "https://email.us-west-2.amazonaws.com"; AWS HTTP error: Client error: `POST https://email.us-west-2.amazonaws.com` resulted in a `403 Forbidden` response:

<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>SignatureDo (truncated...)
SignatureDoesNotMatch (client): The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. - <ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.</Message>
</Error>
<RequestId>196ba786-9d8c-4d78-bf10-052eff69e893</RequestId>
</ErrorResponse>


間違っていた箇所と解決策

まず必要な設定は、公式にも記載されているとおり、SESドライバのインストールとconfigファイルの変更。

https://readouble.com/laravel/5.8/ja/mail.html

 'ses' => [

'key' => env('SES_KEY'),
'secret' => env('SES_SECRET'),
'region' => env('SES_REGION', 'us-east-1'),
],

で、自分が間違っていたのは、SES_KEYとSES_SECRETの値。

AWSコンソールの、SES > SMTP Settings > Using SMTP to Send Email with Amazon SESで作成したユーザーIDとパスワードを入れていた。

実際は、IAM > ユーザー > (SESのwrite権限のあるユーザー) > 認証情報 > アクセスキーの作成 で作ったキーを入力。

解決法が間違っていたら教えてくださいm(_ _)m