我怎么能解决这个问题?
在第729行的/sendgrid-php/lib/helpers/mail/Mail.php中调用未定义的函数SendGrid \ mb_convert_encoding()
这是我的代码
<?php
require("./sendgrid-php/sendgrid-php.php");
$from = new SendGrid\Email(null, "example@example.com");
$subject = "Sending with SendGrid is Fun";
$to = new SendGrid\Email(null, "example@example.com");
$content = new SendGrid\Content("text/plain", "and easy to do anywhere, even with PHP");
// Send message as html
$mail = new SendGrid\Mail($from, $subject, $to, $content);
$apiKey = getenv('my key');
$sg = new \SendGrid($apiKey);
$response = $sg->client->mail()->send()->post($mail);
echo $response->statusCode();
print_r($response->headers());
echo $response->body();
答案 0 :(得分:2)
简短回答:
您需要安装PHP的mbstring
扩展名。如果你正在使用Ubuntu,那么命令可能是这样的:
sudo apt-get install php7.0-mbstring
您可能需要根据PHP版本调整程序包。有许多资源可以在线安装mbstring
。
答案很长:
当PHP在命名空间内遇到函数调用时,它将尝试在当前命名空间内解析该函数。正如您所料,您使用的SendGrid库并没有定义它自己的mb_convert_string()
,因此PHP将尝试检查名为mb_convert_string()
的函数的全局范围。
mb_convert_encoding()
是mbstring
扩展程序的一部分。而且由于您没有安装该扩展程序,因此该功能不存在。 PHP报告SendGrid命名空间中没有函数,因为它是它检查的第一个位置。
很明显,SendGrid开发人员期望该函数位于全局命名空间中。安装扩展程序,你应该很高兴。