在第729行的/sendgrid-php/lib/helpers/mail/Mail.php中调用未定义的函数SendGrid \ mb_convert_encoding()

时间:2018-04-25 00:43:46

标签: php email sendgrid-api-v3

我怎么能解决这个问题?

  

在第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();

1 个答案:

答案 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开发人员期望该函数位于全局命名空间中。安装扩展程序,你应该很高兴。