Исключение параметра MailMun sendMessage

Почему функция sendMessage () выдает здесь исключение?

$mg = new MailGun('my_actual_api_key');

$response = $mg->sendMessage('my-domain.com', array(
'from'     => '[email protected]',
'to'       => '[email protected]',
'subject'  => 'Test',
'html'     => '<h1>Test body</h2>'
));

…и я получаю исключение …

Неустранимая ошибка: необработанное исключение «Mailgun \ Connection \ Exceptions \ MissingRequiredParameters» с сообщением «Параметры, переданные в API, недопустимы. Проверьте ваши входы! в C: \ wamp \ www \ sektor \ admin \ app \ application \ third_party \ MailGun \ vendor \ mailgun \ mailgun-php \ src \ Mailgun \ Connection \ RestClient.php в строке 127

Очевидно, что параметры, которые я отправляю в API, неверны, но они следуют документации API MailGun, но это явно не работает.

Я вообще не модифицировал код класса Mailer.

3

Решение

Чтобы получить немного больше информации об этой ошибке, используйте код из этот патч:

Добавляет фактическое ответное сообщение к ошибкам, выданным на 400, 401 и
404 кода ответа. Это дает гораздо больше полезной информации, чем
текущие сообщения. Сообщение на самом деле не дает вам много, чтобы продолжить. я
потратил часы, пытаясь найти то, что я сделал неправильно, дважды проверяя мой API
ключи и поиск ошибок на Google.

Изменить исходный файл src/Mailgun/Connection/RestClient.php как это (полный патч на https://github.com/mailgun/mailgun-php/pull/72/files):

При броске исключения EXCEPTION_MISSING_REQUIRED_PARAMETERS, получить больше информации с помощью метода getResponseExceptionMessage() (обратите внимание на знаки + и — перед добавленными и удаленными строками):

elseif($httpResponseCode == 400){
-           throw new MissingRequiredParameters(ExceptionMessages::EXCEPTION_MISSING_REQUIRED_PARAMETERS);
+           throw new MissingRequiredParameters(ExceptionMessages::EXCEPTION_MISSING_REQUIRED_PARAMETERS . $this->getResponseExceptionMessage($responseObj));
}

/**
+     * @param \Guzzle\Http\Message\Response $responseObj
+     * @return string
+     */
+   protected function getResponseExceptionMessage(\Guzzle\Http\Message\Response $responseObj){
+       $body = (string)$responseObj->getBody();
+       $response = json_decode($body);
+       if (json_last_error() == JSON_ERROR_NONE && isset($response->message)) {
+           return " " . $response->message;
+       }
+   }
6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]