我正在尝试使用最新的PHP for PHP(v.1.5.0)。我正在尝试发送一封包含AmazonSES的电子邮件。我已经成功发送了带有python脚本的电子邮件,所以我知道我的crendentials和其他设置都没问题。
我已经复制了示例代码,但它不起作用。在调用AmazonSES时,我收到错误消息:
Catchable fatal error: Argument 1 passed to AmazonSES::__construct() must
be an array, string given, called in sendemail.php on line 31 and
defined in sdk-1.5.0/services/ses.class.php on line 67
这是代码:
$AWS_KEY = "AKIEDIEDEIMIAXEOA";
$AWS_SECRET_KEY = "Te+EDEwjndjndededededededj";
require_once("../library/lib_aws/sdk-1.5.0/sdk.class.php");
$amazonSes = new AmazonSES($AWS_KEY, $AWS_SECRET_KEY);
$response = $amazonSes->send_email(
"from@email.com",
array("ToAddresses" => "to@email.com"),
array(
"Subject.Data" => "test",
"Body.Text.Data" => "body test",
)
);
if (!$response->isOK())
{
echo "error";
}
我无法找到如何正确设置凭据以发送电子邮件。
答案 0 :(得分:8)
AmazonSES的构造函数采用带有选项的数组。检查来源:
https://github.com/amazonwebservices/aws-sdk-for-php/blob/master/services/ses.class.php#L55
你会想写它:
$amazonSes = new AmazonSES(array(
"key" => $AWS_KEY,
"secret" => $AWS_SECRET_KEY
));
请点击查看来源(或consult the docs)以确保您无需设置其他选项。
答案 1 :(得分:2)
是的,配置文件格式和服务构造函数在1.5版中略有改变。他们在发行说明中提到这是一个向后不兼容的变化。
答案 2 :(得分:-2)
ToAddress的值必须是数组,而不是字符串。这应该有效:
require_once('amazonsdk/sdk.class.php');
$ses = new AmazonSES();
$response = $ses->send_email(
"senderaddress@example.com",
array("ToAddresses"=>array('receiveraddress@example.com')),
array("Subject.Data"=>"Testing SES subject","Body.Text.Data"=>"Testing SES body.")
);
print_r($response);