как я могу решить эту проблему?
Вызов неопределенной функции SendGrid \ mb_convert_encoding () в /sendgrid-php/lib/helpers/mail/Mail.php в строке 729
это мой код
<?php
require("./sendgrid-php/sendgrid-php.php");
$from = new SendGrid\Email(null, "[email protected]");
$subject = "Sending with SendGrid is Fun";
$to = new SendGrid\Email(null, "[email protected]");
$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();
Короткий ответ:
Вам необходимо установить mbstring
расширение для PHP. Если вы используете 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 ожидают, что функция будет в глобальном пространстве имен. Установите расширение, и вам должно быть хорошо идти.
Других решений пока нет …