【问题标题】:Cannot access empty property - Sendgrid无法访问空属性 - Sendgrid
【发布时间】:2015-09-03 15:03:46
【问题描述】:

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

我以前从未遇到过第二个错误,我对发生了什么感到有点困惑……知道我哪里出错了吗?

【问题讨论】:

    标签: php ibm-cloud sendgrid


    【解决方案1】:

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

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

    忽略之前的链接,它实际上是在尝试这样做:

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

    发送完成,但未能将方法结果放入$email-&gt;$response 变量中(无法访问空属性),因为从未定义过$email-&gt;$response未定义变量)

    【讨论】:

    • 花了我一段时间才明白你的问题,但谢谢!我一直盯着这个 3 小时完全迷失了......
    猜你喜欢
    • 2014-03-06
    • 2013-12-24
    • 1970-01-01
    • 2022-07-07
    • 2020-01-05
    • 2017-11-17
    • 1970-01-01
    • 2014-09-19
    • 2017-12-02
    相关资源
    最近更新 更多