Laravel 5.6发送了电子邮件

时间:2018-04-02 12:30:09

标签: php laravel email laravel-5.6

我正在尝试使用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}}

3 个答案:

答案 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,
    ],
]