Sendgrid:权限被拒绝,凭据错误

问题描述 投票:0回答:2

我正在使用 sendgrid PHP 发送电子邮件。这是我的代码:

require("sendgrid-php.php");

$from = new SendGrid\Email("Example User", "[email protected]");
$subject = "Sending with SendGrid is Fun";
$to = new SendGrid\Email("Example User", "[email protected]");
$content = new SendGrid\Content("text/plain", "and easy to do anywhere, even with PHP");
$mail = new SendGrid\Mail($from, $subject, $to, $content);

$apiKey = getenv('SG.key......');
$sg = new \SendGrid($apiKey);

$response = $sg->client->mail()->send()->post($mail);
echo $response->statusCode();
echo '<pre>';
print_r($response->headers());
echo '</pre>';
echo $response->body();

当我运行上面的代码时,它向我显示以下错误消息:

401 数组( [0] => HTTP/1.1 401 未经授权 [1] => 服务器:nginx [2] => 日期:2017 年 5 月 29 日星期一 17:52:44 GMT [3] => 内容类型:application/json [4] => 内容长度:88 [5] => 连接:保持活动状态 [6] => X 框架选项:拒绝 [7] => 访问控制允许来源:https://sendgrid.api-docs.io [8] => 访问控制允许方法:POST [9] => 访问控制允许标头:授权、内容类型、代表、x-sg-elas-acl [10] => 访问控制最大年龄:600 [11] => X-No-CORS-原因:https://sendgrid.com/docs/Classroom/Basics/API/cors.html [12] => [13] => ) {"errors":[{"message":"权限被拒绝,凭据错误","field":null,"help":null}]}

我不明白为什么我会收到与权限相关的错误,因为我刚刚创建了 API 密钥。

php sendgrid
2个回答
2
投票

这很常见。理解和做起来几乎不需要一个小时。您需要设置 env 或使用用户名密码身份验证系统。请阅读Github 上的官方文档此处的文档此处的文档


0
投票

我也遇到了同样的问题。

您所要做的就是像这样删除 getenv 函数

$apiKey = 'SG.key......'; $sg = new \SendGrid($apiKey);

另一种方式可能是

$sendgrid = new \SendGrid('SG..Tw');

请记住,您在代码中设置的 api 密钥和发件人地址应与为其建立的电子邮件发件人相关,而不是您注册时使用的电子邮件。

© www.soinside.com 2019 - 2024. All rights reserved.