发件人签名DoesNotMatch签名已过期


Sender SignatureDoesNotMatch Signature expired

嗨,我的代码几天前运行得很好,我今天检查了一下,在使用亚马逊服务发送电子邮件时出现了错误

在上执行"SendEmail"时出错https://email.us-west-2.amazonaws.com";AWS HTTP错误:客户端错误:POST https://email.us-west-2.amazonaws.com导致403 Forbidden响应:发件人SignatureDo(截断…)SignatureDoesNotMatchb64acacc-4ce7-11e6-adb5-0992ceb0921c

我的代码是:

require_once("aws/aws-autoloader.php");
use Aws'Ses'SesClient;
define('SENDER', 'no-reply@example.net');
    define('RECIPIENT', 'my@example.com');    
    define('REGION','us-west-2');
    $client = SesClient::factory(array(
        'version'=> 'latest',     
        'region' => REGION,
        'credentials' => array(
            'key'    => '******************',
            'secret' => '*****************************',
        )
    ));
    $request = array();
    $request['Source'] = SENDER;
    $request['Destination']['ToAddresses'] = array(RECIPIENT);
    $request['Message']['Subject']['Data'] = $subject;
    $request['Message']['Body']['Text']['Data'] = $message;
    try {
         $result = $client->sendEmail($request);
         $messageId = $result->get('MessageId');
    } catch (Exception $e) {
        echo($e->getMessage()."'n");
    }

我该怎么解决这个问题?

来自Michael-sqlbot的评论:

与大多数服务器一样,亚马逊服务器使用UTC,但问题可能不是您的时区。任何好的库都能正确地处理必要的转换。你的时钟只需要在设置的时区中设置为正确的当前时间,不管是什么。过期和偏斜通常(尽管不一定)是同一问题的两个症状。Ubuntu?sudo apt-get install ntp。亚马逊Linux?sudo yum install ntp

  • 使用ntp 同步本地时钟

  • 搜索如何在操作系统中使用它