【问题标题】:Amazon SES not working with eu_west_1 but ok using us_east_1 PHPAmazon SES 不能与 eu_west_1 一起使用,但可以使用 us_east_1 PHP
【发布时间】:2020-09-15 15:15:45
【问题描述】:

我正在重写一些脚本以利用 Amazon AWS 的新 v4 签名。

我正在尝试使用此页面上的代码发送电子邮件:

https://github.com/okamos/php-ses

当我完全按照添加密钥等方式使用他的代码时,我收到一条错误消息,提示我的电子邮件地址未在 us_east_1 上验证。这是有道理的,因为我所有的东西都在 EU_WEST_1。

所以我尝试添加欧盟端点作为第三个参数,但得到这个错误:

'警告:SimpleEmailService::sendEmail():6 无法解析主机:EU_WEST_1'

这行代码似乎可以工作,但连接到错误的端点

$ses = new SimpleEmailService('apikey', 'secretkey');
print_r($ses->sendEmail($m));

我已经尝试像这样添加新端点作为第三个参数

$ses = new SimpleEmailService('apikey', 'secret','eu-west-1');

但这只会产生错误。

谁能告诉我用于设置 eu-west-1 端点以通过其发送电子邮件的正确代码?

谢谢

【问题讨论】:

  • 区域不应该有破折号,而不是下划线吗?
  • 我尝试了破折号和下划线的每种组合,但结果相同

标签: php amazon-web-services amazon-ses


【解决方案1】:

我在使用 AWS PHP 库将文件上传到 S3 时遇到了同样的问题。即使我设置了从 us-east-1 到 eu-west-1 的区域,它仍然默认使用 us-east-1。我建议您在库中查找区域配置以及它是如何覆盖的。

us-east-1 和 eu-west-1 的 SES 电子邮件主机不同。因此,即使您传递了正确的 API 和 Secret,它也可能由于默认区域而无法工作。

如果此调试过程不起作用,可以在发送电子邮件之前分享您所在区域的屏幕截图。我很想进一步探索。

【讨论】:

    【解决方案2】:

    我发现了问题。

    看起来github上的代码中有错字,文件'SimpleEmailServices.php中有这3行:

        const AWS_US_EAST_1 = 'email.us-east-1.amazonaws.com';
        const AWS_US_WEST_2 = 'email.us-west-2.amazonaws.com';
        const AWS_EU_WEST1 = 'email.eu-west-1.amazonaws.com';
    

    他错过了 AWS_EU_WEST1 中的下划线。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 2012-07-14
      相关资源
      最近更新 更多