我正在尝试使用laravel 5.6发送电子邮件,但我失败了。
在我的.env文件中,我输入了我的私人Gmail,以便将所有邮件发送到此电子邮件。
class InquirySent extends Mailable
{
use Queueable, SerializesModels;
public $data;
public function __construct($data)
{
$this->data = $data;
}
public function build()
{
return $this->from($this->data['email'])
->view('emails.contacts.inquiry');
}
}
此外,我创建了一个像这样的Mailable类:
array:3 [
"name" => "foo"
"email" => "test@gmail.com"
"phoneNumber" => "16547613247805"
]
我只需要将这些数据添加到我从表单中获取的邮件中:
public function sent(ContactRequest $request)
{
$data = $request->all();
Mail::to(env('MAIL_USERNAME'))->send(new InquirySent($data));
}
在我的控制器中,我有以下功能来发送邮件:
{,…}
exception
:
"ErrorException"
file
:
"D:\laragon\www\tim\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php"
line
:
94
message
:
"stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:↵error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed"
trace
:
[{function: "handleError", class: "Illuminate\Foundation\Bootstrap\HandleExceptions", type: "->"},…]
错误消息:
{{1}}
答案 0 :(得分:1)
在config文件夹中找到mail.php文件并添加以下代码。
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true,
],
答案 1 :(得分:0)
您的代码没有问题。添加一些延迟并尝试使用队列。也可能是一个问题。您可以删除它或阻止ssl权限。
Mail::to(env('MAIL_USERNAME'))->send((new InquirySent($data))->delay(30));
和php artisan queue:work
答案 2 :(得分:0)
除了@Cool's answer之外,对于 Laravel 5.6 ,您需要将此代码添加到 config / mail.php
'stream' => [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true,
],
]