听起来它应该是固定的,但我无法让它发挥作用。
我已阅读send_email的API参考 我已经阅读了与其相关的其他线程,此处和其他网站。我已经使用代码示例来确保我的参数数组是正确嵌套的(我可以弄清楚)但是所有内容都给出了“意外的列表元素终止”
function amazonSesEmail($to, $subject, $message)
{
$amazonSes = new AmazonSES(); //
$response = $amazonSes->send_email('my_ses_confirmed_email@gmail.com',
array('ToAddresses' => $to),
array(
'Subject.Data' => $subject,
'Body.Text.Data' => $message,
)
);
return $response;
}
我也在尝试遵循参考结构时尝试过这样的混乱:
$aws_reply = $aws_ses->send_email( $fromEmailAddress,
array('ToAddresses' => 'same@gmail.com'),
array(
array( 'Subject' => array('Data' => 'New Request '),
'Body' => array( 'Text' => array('Data' => 'New Request '))
)
)
);
在所有情况下,当我print_r($ response)时,这是详细信息:
CFResponse Object
(
[header] => Array
(
[x-amzn-requestid] => xxxx-xxxxx
[content-type] => text/xml
[content-length] => 280
[date] => Fri, 16 Dec 2011 03:24:07 GMT
[_info] => Array
(
[url] => https://xxxxx/
[content_type] => text/xml
[http_code] => 400
[header_size] => 166
[request_size] => 1088
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.349242
[namelookup_time] => 0.156135
[connect_time] => 0.189468
[pretransfer_time] => 0.28083
[size_upload] => 185
[size_download] => 280
[speed_download] => 801
[speed_upload] => 529
[download_content_length] => 280
[upload_content_length] => 185
[starttransfer_time] => 0.349204
[redirect_time] => 0
[certinfo] => Array
(
)
[method] => POST
)
[x-aws-stringtosign] => Fri, 16 Dec 2011 03:24:06 GMT68492574-F715-4AE3-B153-9446AE80866D
[x-aws-request-headers] => Array
(
[Content-Length] => 185
[Content-MD5] => 9+iobwTmkId+4ZmGt+6CDw==
[Content-Type] => application/x-www-form-urlencoded; charset=utf-8
[Date] => Fri, 16 Dec 2011 03:24:06 GMT
[Host] => xxxxxxxxxx.com
[X-Amz-Nonce] => xxx
[X-Amzn-Authorization] => AWS3-HTTPS AWSAccessKeyId=xxx,Algorithm=HmacSHA256,SignedHeaders=Content-Length;Content-MD5;Content-Type;Date;Host;X-Amz-Nonce,Signature=xxxx
)
[x-aws-body] => Action=SendEmail&Destination.ToAddresses=xxxx%40gmail.com&Message.Body.Text.Data=test%20body&Message.Subject.Data=test%20subject&Source=xxxxx%40gmail.com&Version=2010-12-01
)
[body] => CFSimpleXML Object
(
[@attributes] => Array
(
[ns] => http://xxxx
)
[Error] => CFSimpleXML Object
(
[Type] => Sender
[Code] => MalformedInput
[Message] => Unexpected list element termination
)
[RequestId] => xxxxx
)
[status] => 400
)
我正在将头发撕成两半再次,它应该是如此向前推进,但我似乎无法满足它的格式要求,并且对于那些在博客上发表意见的其他人看起来不适用于我。来自之前完成此任务的人的任何意见将不胜感激!
答案 0 :(得分:9)
我今天也有这个问题你正在报道。经过一番搞砸之后,我发现以下配置适用于aws php sdk:sdk-1.5.3:
$response = $ses->send_email($fromEmail,
array('ToAddresses' => array($toEmail)),
array(
'Subject.Data' => $subject,
'Body.Html.Data' => $content,
)
);
看看你和我之间的差异......
$response = $amazonSes->send_email('my_ses_confirmed_email@gmail.com',
array('ToAddresses' => $to), // problem is here
array(
'Subject.Data' => $subject,
'Body.Text.Data' => $message,
)
);
在两个示例中,您都将“to address,$to
”放在数组中。
迟到总比没有好!
答案 1 :(得分:0)
我没有使用该方法,但我确实通过php PEAR软件包的MAIL扩展从php发送电子邮件。在AWS dashoard中,您可以设置您的SES帐户以使用SMTP身份验证,因此我这样做了,现在SES允许我按预期通过smtp发送邮件。
希望这可以节省其他人一些时间和头痛
答案 2 :(得分:0)
我认为这与地址列表必须格式化的方式有关;我在与多个收件人合作时遇到了很多麻烦,但只有一个ToAddress让事情变得非常棘手......
这可能对您有所帮助:Sending emails to multiple recipients with Amazon SES
使用CFComplexType::map()
有助于确保事物处于SES的正确结构中。