1

我该如何解决这个问题?

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

1 回答 1

3

简短的回答:

您需要安装mbstringPHP 的扩展。如果您使用的是 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 开发人员希望该函数位于全局命名空间中。安装扩展程序,您应该一切顺利。

于 2018-04-25T01:36:39.397 回答