Отправьте электронное письмо с помощью SendGrid и PHP, используя PHP SDK

После нескольких часов исследований мне нужна была помощь.

Я хотел бы использовать API SendGrid для отправки электронной почты с помощью PHP с помощью PHP SDK, найденного здесь https://github.com/sendgrid/sendgrid-php.

Собственно, код у меня следующий:

требуется ("sendgrid / sendgrid-php.php");

$email = new \SendGrid\Mail\Mail(); 
$email->setFrom("[email protected]", "Example User");
$email->setSubject("Sending with Twilio SendGrid is Fun");
$email->addTo("[email protected]", "Example User");
$email->addContent("text/plain", "and easy to do anywhere, even with PHP");
$email->addContent("text/html", "<strong>and easy to do anywhere, even with PHP</strong>");
$sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));
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";

У меня также есть ключ API в необходимом .env файле. Я просто назвал его .env. Я не знаю, правильно ли это на данный момент.

Содержимое этого файла следующее:

export SENDGRID_API_KEY='SG.xxxxxxxxxxxx'

Когда я тестирую страницу, у меня возникает следующая ошибка:

401 Array ( [0] => HTTP/1.1 401 Unauthorized [1] => Server: nginx [2] => Date: Tue, 03 Sep 2019 23:44:21 GMT [3] => Content-Type: application/json [4] => Content-Length: 88 [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] => ) {"errors":[{"message":"Permission denied, wrong credentials","field":null,"help":null}]}

Что я делаю не так, пожалуйста?

Я красил документацию, но не могу найти причину ошибки.

Большое спасибо за любую помощь.


person PacPac    schedule 03.09.2019    source источник
comment
Вы используете чистый PHP или фреймворк вроде Laravel? вы устанавливали пакеты vulcas/dotenv и sendgrid-php с помощью composer?   -  person Salim Djerbouh    schedule 04.09.2019
comment
Здравствуйте, я использую чистый PHP. И я не устанавливаю Vulcan / dotenv или пакет с Composer.   -  person PacPac    schedule 04.09.2019


Ответы (1)


.env требовалось, чтобы vlucas/phpdotenv был установлен через composer

composer require vlucas/phpdotenv

И иметь ключ API без ключевого слова export или кавычек

SENDGRID_API_KEY=SG.xxxxxxxxxxxx
person Salim Djerbouh    schedule 04.09.2019
comment
И если я не использую Composer, есть ли какой-либо вариант, например, объяснение в документе? - person PacPac; 04.09.2019
comment
Тогда просто не используйте функцию getenv и жестко закодируйте свой ключ API. - person Salim Djerbouh; 04.09.2019