我在Laravel发送电子邮件时遇到了一个奇怪的问题。
我使用Mailgun,可以在用户注册时发送电子邮件等等。
我开始使用调度命令,并创建了一个自定义工匠命令来获取一些记录并发送一些电子邮件。
但是当我运行此命令时出现错误:
cURL错误60:SSL证书问题:无法获取本地颁发者 证书
我已在本地设置cacert.pem
并在我的php.ini
文件中成功关联,这是我能够正常发送电子邮件的方式。
我不明白为什么我的命令无法发送电子邮件,因为我可以在控制器内发送它们。
这是我用于命令的代码:
$reminders = Reminder::where('utcReminderDate' , '<=', \Carbon\Carbon::now()->format('Y-m-d H:i'))->get();
foreach($reminders as $reminder)
{
Mail::send('emails.test', [], function($message) {
$message->to('me@example.com', 'Joe Bloggs');
$message->subject('A reminder for you');
});
}
我想要收到所有需要发送的提醒,然后循环播放这些提醒。
当我运行命令通过命令行测试它时,它会吐出上面的错误。
任何帮助发送电子邮件的人都会非常感激。如果这会产生影响,我会使用WAMP。
答案 0 :(得分:0)
您可以像我在本地计算机中那样,从GuzzleHttp\Client
方法修改供应商文件夹verify
更改false
密钥到configureDefaults
或强>
您可以阅读此conversation in Laracasts并尝试在某些评论中下载.pem
个文件。
以下是一些链接:
之后你应该相应地编辑你的php.ini文件:
curl.cainfo = "[pathtothisfile]\cacert.pem"
PS:我只想编辑供应商文件,因为它更快,也不难实现。
答案 1 :(得分:0)
使用此代码:
$this->client = new GuzzleClient(['defaults' => [
'verify' => false
]]);
这适合我。
答案 2 :(得分:0)
很明显,从CLI访问PHP时,PHP可能会加载另一个php.ini文件。 See here。
将我的php.ini文件复制到C:\windows
中解决了该问题。