无法访问空属性 - Sendgrid

时间:2015-09-03 15:03:46

标签: php ibm-cloud sendgrid

尝试使用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行的空属性

我之前从未遇到过第二次错误,我对于发生了什么感到困惑...任何想法都出错了?

1 个答案:

答案 0 :(得分:5)

addHeader('X-Transport', 'web')->第20行的多余T_OBJECT_OPERATOR->)是你的坏人。

它尝试在第21行的$response对象中使用$email变量。

忽略以前的链接,它本质上是试图这样做:

$email->$response = $sendgrid->send($email);

发送已完成,但未能将方法结果放入$email->$response变量(无法访问空属性),因为永远不会定义$email->$response未定义的变量