使用Amazon SDK尝试从我们的系统发送电子邮件。
我遵循的步骤:
创建AWS帐户,验证mydomainname.co.uk,并验证2个电子邮件地址。me@personal.co.uk和me@mydomainname.co.uk
然后设置SMTP凭据,并使用API密钥和密钥作为我的访问凭据来创建客户端
$sesClient = SesClient::factory(array(
'key' => 'AKIAIXXXXXXXXXXX5LGQ',
'secret' => 'AqNL4XXXXXXXXXXXCaBxDMWjzcY4zGbN8tR2S',
'region' => 'us-west-2',
));
var_dump($sesClient->getSendQuota());
只要我运行任何与API交互的东西,我就会得到以下异常
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.
澄清:
- 我已经在AWS web界面上成功发送了测试邮件
- 我已经尝试了许多不同的用户
- 我也尝试了这个SMTP用户/pass,但得到一个响应,我的凭据无效
- 我用各种库包装器代码试过了,我在网上发现了点,同样的错误
- 我仍然在测试模式,但这应该是好的,因为我只是试图从一个有效的电子邮件地址发送到一个有效的电子邮件地址- 对吗?
我能想到的唯一一件事:我在本地机器上设置了一个测试环境,它不在我的验证域名上,可能是AWS希望我从验证域名发送请求以验证它吗?
编辑
刚刚尝试在我的生产设备上运行这段代码,我得到了相同的错误
也许我需要生产模式?
您收到的异常意味着您的凭据(key
和secret
)不正确。尝试发送请求到另一个服务(如$s3Client->listBuckets()
),以双重检查,然后登录到您的帐户,并得到正确的。