0

我一直在关注 Laravel Mail 文档https://laravel.com/docs/5.4/mail通过 SparkPost 帐户发送电子邮件。当我尝试发送时,我得到了

ClientException
Client error: `POST https://api.sparkpost.com/api/v1/transmissions` resulted in a `401 Unauthorized` response:
{"errors": [ {"message": "Unauthorized."} ]}

根据文档,我在 config/services.php 中获得了 sparkpost 密钥,尽管文档没有提及它(为什么不!?)有点谷歌搜索说服我在我的 . .env 文件。然后我有一个网络路由来检查正在使用的配置,

Route::get('test', function()
{
    dd(Config::get('mail'));
});

这使

array:9 [▼
  "driver" => "sparkpost"
  "host" => "smtp.sparkpostmail.com"
  "port" => "587"
  "from" => array:2 [▶]
  "encryption" => "tls"
  "username" => "my-sparkpost-account-login-email-address"
  "password" => "my-sparkpost-account-login-password"
  "sendmail" => "/usr/sbin/sendmail -bs"
  "markdown" => array:2 [▶]
]

我实际上想使用我设置的可邮寄和视图,但只是为了测试发送,我绕过了这些并设置了以下路由进行测试:

Route::get('/sparkpost', function () {
  Mail::send('emails.test', [], function ($message) {
    $message
      ->from('marketing@my-sparkpost-sending-domain.com', 'Me')
      ->to('my-email-address', 'My-Name')
      ->subject('A Test Email');
  });
});

它在顶部出现错误(使用我的邮件和视图进行测试给出了完全相同的错误,这让我认为它们设置正确 - 假设上述测试路线是正确的)。

我想知道的是我正在本地机器上进行测试,所以测试 URL 是http://localhost/seg/public/sparkpost - 我想知道这是否会让 SparkPost 跳闸(即我必须实际上是从运行在与 sparkpost 中配置的发送域相同的域中的服务器发送,还是只是电子邮件中的发送地址必须匹配?)

感谢您的任何建议!

4

1 回答 1

0

如果您使用 smtp 驱动程序,

您需要转到 Account > SMTP Relay 来获取 SMTP 的凭据,这不是您的 sparkpost 帐户凭据。

如果您使用 sparkpost 驱动程序,

需要将 sparkpost 的 api key 放入 config/services.php 中,使用 sparkpost 驱动不需要输入 smtp 用户名和密码

于 2017-09-27T05:17:56.803 回答