502 Bad Gateway - Sendgrid PHP Mail Проблема - PullRequest
0 голосов
/ 27 декабря 2018

Я получаю сообщение об ошибке 502 Bad Gateway при попытке отправить электронное письмо с использованием библиотеки PHP Sendgrid.Я приложил журнал ошибок ниже,

502 Array ( 
[0] => HTTP/1.1 502 Bad Gateway
[1] => Server: nginx
[2] => Date: Thu, 27 Dec 2018 19:30:14 GMT
[3] => Content-Type: text/html
[4] => Content-Length: 166
[5] => Connection: keep-alive
[6] => Access-Control-Allow-Origin: https://sendgrid.api-docs.io
[7] => Access-Control-Allow-Methods: POST
[8] => Access-Control-Allow-Headers: Authorization, Content-Type, On-behalf-of, x-sg-elas-acl
[9] => Access-Control-Max-Age: 600
[10] => X-No-CORS-Reason: 
https://sendgrid.com/docs/Classroom/Basics/API/cors.html
[11] =>
[12] => )

Я не знаю, где я не прав, и я следовал согласно документации на веб-сайте SendGrid (Github также).Ниже приведен код, который я использовал.

Я уже пробовал возможные способы устранения неполадок, обнаруженные в других вопросах и проблемах в GitHub-репозитории sendgrid-php.

<?php
  require("sendgrid/sendgrid-php.php");
  $email = new \SendGrid\Mail\Mail();
  $email->setFrom("noreply@mydomain.com", "Leads");
  $email->setSubject($_POST['school'] . " - Appointment");
  $tos = [
    "support@mydomain.com" => "Support",
    $_POST['email'] => $_POST['name']
  ];
  $email->addTos($tos);
  $email->addContent("text/html", "<p><strong>Name:</strong> {$_POST['name']}</p>");
  $email->addContent("text/html", "<p><strong>Email:</strong> {$_POST['email']}</p>");
  $email->addContent("text/html", "<p><strong>Mobile:</strong> {$_POST['mobile']}</p>");
  $email->addContent("text/html", "<p><strong>School:</strong> {$_POST['school']}</p>");
  $email->addContent("text/html", "<p><strong>Count:</strong> {$_POST['count']}</p>");
  $email->addContent("text/html", "<p><strong>Gender:</strong> {$_POST['gender']}</p>");
  $sendgrid = new \SendGrid('xxxxxxxxxxxxxxAPIKEYxxxxxxxxxxxxxxxx');
  try {
    $response = $sendgrid->send($email);
    print $response->statusCode() . "\n";
    print_r($response->headers());
    print $response->body() . "\n";
  } catch (Exception $e) {
    echo 'Caught exception: '. $e->getMessage() ."\n";
  }
?>

Адрес электронной почты должен бытьотправляется при выполнении кода.

1 Ответ

0 голосов
/ 30 декабря 2018

Есть некоторая странная проблема с SendGrid.Иногда API автоматически удаляется в серверной части.Чтобы код работал, мне нужно было создать новый ключ API и повторить попытку.И решение сработало.

Примечание - Некоторые проблемы в GitHub указали инициализировать конструктор с адресом from, но это не было реальной проблемой.Обходной путь - создать новый ключ API на панели инструментов, пока SendGrid не выяснит, почему API мягко удаляется, поэтому вызов API возвращает ошибку.

...