【问题标题】:Sendgrid API - Bad username / password errorSendgrid API - 错误的用户名/密码错误
【发布时间】:2016-04-09 05:39:00
【问题描述】:

我正在尝试使用 Sendgrid 发送我的第一封电子邮件:

$sendgrid = new SendGrid('username', 'xx.xxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxx');
$email = new SendGrid\Email();

$email->addTo("email1@gmail.com")
      ->setFrom("email@domain.com")
      ->setSubject("Sending with SendGrid is Fun")
      ->setHtml("and easy to do anywhere, even with PHP");

这是我遇到的错误:

PHP 致命错误:带有消息的未捕获异常“SendGrid\Exception” '{"errors":["Bad username / password"],"message":"error"}'


我当然使用来自 Sendgrid 设置的真实 API 密钥信息,而不是 'username' 和 'xx.xxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxx':

我使用了创建 API 密钥后提供的长字符串密钥。但是这条线似乎仍然有问题: $sendgrid = new SendGrid('用户名', 'xx.xxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxx');

我应该从哪里获取授权信息,以免出现错误的用户名/密码错误?

【问题讨论】:

    标签: php sendgrid


    【解决方案1】:

    请尝试使用您的 SendGrid 用户名(用于登录仪表板的用户名等),而不是使用 API 密钥的名称“用户名”。

    编辑:要使其正常工作,还要使用 Sendgrid 密码而不是 API 密钥。这对我有用。

    编辑 2:虽然这解决了问题,但应该只使用所选答案中提到的 api 密钥。

    【讨论】:

    • 我也添加了另一个可能的答案/解决方案。
    • 请使用我提供的其他答案/解决方案。谢谢。
    • 找到了。如果您使用 api 方式,只需使用接受的答案。如果您使用 smtp 方式,这是正确的答案。您应该使用 sendgrid 登录用户名和密码而不是 api 密钥作为 smtp 用户名和密码
    【解决方案2】:

    另一个可能的答案是只将 api 键传递给 SendGrid() 构造函数;

    $sendgrid = new SendGrid('xx.xxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxx');
    $email = new SendGrid\Email();
    
    $email->addTo("email1@gmail.com")
          ->setFrom("email@domain.com")
          ->setSubject("Sending with SendGrid is Fun")
          ->setHtml("and easy to do anywhere, even with PHP");
    

    【讨论】:

    • 如果这也有效并解决了问题,我强烈建议您使用此构造函数,因为 a) 您的完全访问用户名和密码不会在您的代码中或可能泄露 b) 通过使用 API 密钥您可以撤销泄露的密钥并设置更细粒度的权限。
    • 这是正确的答案,提问者应该只传递他们的 SendGrid API 密钥。通过传递两个字符串,SendGrid 库认为他们选择使用用户名和密码而不是 API 密钥。
    猜你喜欢
    • 2016-06-14
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 2022-10-14
    • 2016-11-11
    • 2018-08-09
    • 2011-07-10
    • 1970-01-01
    相关资源
    最近更新 更多