【发布时间】:2017-09-26 20:06:01
【问题描述】:
我一直在关注 Laravel 邮件文档 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 中配置的发送域相同的域中,或者只是电子邮件中的发送地址必须匹配?)
感谢您的任何建议!
【问题讨论】:
-
您发布的 JSON 似乎与您的设置不一致。错误来自 REST HTTP 接口,但设置似乎是针对 SMTP。我认为您需要找到 REST 设置并使用用户名/apiKey 进行设置。还要确保用户名设置为“SMTP_Injection”
-
而且您不必从您设置的同一域上的服务器发送。这个错误几乎总是你没有给 API 密钥适当的权限,或者用户名/密码没有正确配置。
标签: laravel laravel-5 laravel-5.4 sparkpost