我目前正面临生产中让我疯狂的局面。我正在使用PHP 7.1
,Laravel 5.5.26
和Sendgrid 4.0.4
。
失败的代码是:
$this->email
->setFrom($from) // sender email
->setSubject(' ')
->setSmtpapiTos($recipients)
->setSubstitutions($params)
->setSections($sections)
->addCategory($category)
->addBcc($bcc)
->setText(' ')
->setHtml(' ')
->setFromName($name) // sender name
->setTemplateId($tempId); // id template email
// send email
$this->sendgrid->send($this->email);
我得到的当前错误如下:
count():参数必须是实现Countable的数组或对象
它来自于:
at HandleExceptions-> handleError(2,'count():参数必须是一个数组或实现Countable的对象','/ app / vendor / sendgrid / sendgrid / lib / SendGrid / Email.php',569,array() )在Email.php中的count(null)(第569行)
在Email-> getHeadersJson()在Email.php(第611行)
在SendGrid.php中的Email-> toWebFormat()(第109行)
在EmailController.php中的SendGrid-> send(object(Email))(第100行)
我将不胜感激任何帮助。
更新
我添加了 - > addHeader('key','value')(虚拟键值对),因此标题不是空的,它可以正常工作。
可能解决方案
我刚刚给电子邮件添加了带有虚拟键值对的addHeader(key,value),所以我尽量避免标题为空。
当我使用PHP 7.1
而不是PHP 7.2
时,仍然不明白为什么会发生这种情况。