尝试使用Sendgrid的API(在bluemix上运行)发送自动电子邮件。
$sendgrid_username = 'XXXXXXXXX';
$sendgrid_password = 'XXXXXXXXXXXXXXX';
$to = $_SESSION['emailto'];
$from = "XXXXXXXXXXX@XXXX.com";
$sendgrid = new SendGrid($sendgrid_username, $sendgrid_password, array("turn_off_ssl_verification" => true));
$email = new SendGrid\Email();
$email->addTo($to)->
setFrom($from)->
setSubject('Password Reset')->
setHtml("<b>A new password has been set for the user: %mailto%.<br> The new password is: %pass%<br><br></b>")->
addSubstitution("%mailto%", array($_SESSION['emailto']))->
addSubstitution("%pass%", array($random_pass_clear))->
addHeader('X-Sent-Using', 'SendGrid-API')->
addHeader('X-Transport', 'web')->
$response = $sendgrid->send($email); //this is line 21
我使用了Sendgrid的示例代码,一切正常(我发送的电子邮件)。但是我确实遇到了2个错误:
PHP注意:第21行的未定义变量响应
PHP致命错误:无法访问第21行的空属性
我之前从未遇到过第二次错误,我对于发生了什么感到困惑...任何想法都出错了?
答案 0 :(得分:5)
addHeader('X-Transport', 'web')->
第20行的多余T_OBJECT_OPERATOR
(->
)是你的坏人。
它尝试在第21行的$response
对象中使用$email
变量。
忽略以前的链接,它本质上是试图这样做:
$email->$response = $sendgrid->send($email);
发送已完成,但未能将方法结果放入$email->$response
变量(无法访问空属性),因为永远不会定义$email->$response
(未定义的变量)