我正在尝试使用 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"
参数添加名称,我没有任何成功。我试过了:
$request['Source'] = "My Name <sender@example.com>";
或者
$request['Source'] = "'My Name' <sender@example.com>";
或者
$request['Source'] = "'My Name'<sender@example.com>";
或者
$request['Source'] = "'My Name <sender@example.com>'";
或者
$request['Source'] = '"My Name" <sender@example.com>';
或者
$request['Source'] = '"My Name"<sender@example.com>';
或者
$request['Source'] = '"My Name <sender@example.com>"';
以上都不起作用。
有人知道如何将 SESsendEmail
与电子邮件名称一起使用吗?我在这里看到的一些答案,比如这个,根本行不通。我需要使用sendEmail
和 PHP SDK。