指定名称的AWS SES SendEmail提供403 Forbidden响应

时间:2016-10-06 14:48:44

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

我正在尝试使用Amazon SES服务设置邮件系统。如果我只使用"Source"参数中的电子邮件地址,那么一切都很好并且有效。如果我尝试添加名称,则会收到403 Forbidden HTTP错误。

在我的PHP代码中,我使用AWS SDK:

$client = Aws\Ses\SesClient::factory(array(
    'key'    => 'MYAWSKEYXXXXXXXXXX',
    'secret' => 'MYAWSSECRETXXXXXXXXXXX',
    'version'=> 'latest',
    'region' => 'us-east-1'
));

$request = array();
$request['Source'] = "sender@example.com";
$request['Destination']['ToAddresses'] = array("receiver@example.com");
$request['Message']['Subject']['Data'] = 'Mail Subject';
$request['Message']['Body']['Html']['Data'] = 'mail body in HTML: <b>Hello!</b>';

try {
     $result = $client->sendEmail($request);
     $messageId = $result->get('MessageId');
     $message = "Email sent! Message ID: $messageId";

} catch (Exception $e) {
     $message = "The email was not sent. Error message: ";
     $message .= $e->getMessage();
}

此代码效果很好,因为我已使用正确的策略在AWS控制台中正确设置了我的电子邮件源。因此,此示例中的"sender@example.com"可以正确发送电子邮件。

然后,如果我尝试为"Source" param添加名称,我就不会取得任何成功。我试过了:

$request['Source'] = "My Name <sender@example.com>";

OR

$request['Source'] = "'My Name' <sender@example.com>";

OR

$request['Source'] = "'My Name'<sender@example.com>";

OR

$request['Source'] = "'My Name <sender@example.com>'";

OR

$request['Source'] = '"My Name" <sender@example.com>';

OR

$request['Source'] = '"My Name"<sender@example.com>';

OR

$request['Source'] = '"My Name <sender@example.com>"';

以上都不是。

是否有人知道如何将SES sendEmail与电子邮件名称一起使用? 我在这里看到的一些答案,如this one,根本不起作用。我需要使用sendEmail和PHP SDK。

0 个答案:

没有答案