【问题标题】:Laravel 5.6 sent emailLaravel 5.6 已发送电子邮件
【发布时间】:2018-04-02 12:30:09
【问题描述】:

我正在尝试使用 laravel 5.6 发送电子邮件,但失败了。

在我的 .env 文件中,我放置了我的私人 gmail,以便所有邮件都发送到此电子邮件。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mymail@gmail.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls

我还创建了一个这样的 Mailable 类:

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');
    }
}

我只需要将这些数据添加到我从表单获得的邮件中:

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: "->"},…]

【问题讨论】:

  • 错误信息在哪里?
  • @devnullΨ 抱歉更新了问题
  • 你能试试 465 端口吗?
  • @Chris 使用端口 465 没有给我任何错误,但我也没有收到电子邮件?
  • 您是否允许在您的 gmail 中使用不太安全的应用程序? support.google.com/accounts/answer/6010255?hl=en

标签: php laravel email laravel-5.6


【解决方案1】:

在 config 文件夹中找到 mail.php 文件并添加以下代码。

'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true,
    ],

【讨论】:

  • 该文件中没有 ssl 关键字
  • @tigerel 我已经修改了我的答案,请看一下。
【解决方案2】:

您的代码没有问题。添加一些延迟并尝试使用队列。 tls 也可能是一个问题。您可以删除它或阻止 ssl 权限。

 Mail::to(env('MAIL_USERNAME'))->send((new InquirySent($data))->delay(30));

php artisan queue:work

【讨论】:

    【解决方案3】:

    除了@Cool's answer,对于Laravel 5.6,您需要将此代码添加到config/mail.php

    'stream' => [
        'ssl' => [
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true,
        ],
    ]
    

    【讨论】:

      猜你喜欢
      • 2018-10-11
      • 2019-06-28
      • 1970-01-01
      • 2018-10-08
      • 2017-02-11
      • 2015-10-01
      • 2020-06-02
      • 1970-01-01
      • 2022-08-13
      相关资源
      最近更新 更多