Laravel 5.5 mailgun不发送电子邮件 - 没有错误

Luu*_*ter 8 php email laravel mailgun

我试图用mailgun发送电子邮件,但他们不会发送,我不知道为什么,因为我根本没有任何错误.

这是我的代码:

mail.php:

'driver' => env('MAIL_DRIVER', 'mailgun'),
Run Code Online (Sandbox Code Playgroud)

services.php:

'mailgun' => [
    'domain' => env('sandbox1e...60.mailgun.org'),
    'secret' => env('key-146...419'),
],
Run Code Online (Sandbox Code Playgroud)

EmailController.php:

public function send($email, $uuid = null)
{
    if($uuid == null){
        $uuid = User::get()->where('customer_email' , $email)->first()->email_confirmed;
    }

    return Mail::to($email)->send(new ConfirmEmail($uuid));

}
Run Code Online (Sandbox Code Playgroud)

ConfirmEmail.php:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class ConfirmEmail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public $uuid;

    public function __construct($uuid)
    {
        $this->uuid = $uuid;

    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->from('mailgun@sandbox1e17506823f2490ba9cc78cbbc2adb60.mailgun.org')
            ->view('emails.confirm');
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经在mailgun中添加了我要发送的电子邮件,但它无法正常工作.我做错了什么或有什么办法可以调试吗?

Est*_*cia 9

您的配置错误:

'mailgun' => [
    'domain' => env('sandbox1e...60.mailgun.org'),
    'secret' => env('key-146...419'),
],
Run Code Online (Sandbox Code Playgroud)

env函数查找具有您提供的名称的环境变量并返回该值.您应该将其更改为环境变量的名称,并在.env中定义它或不使用env函数.


小智 6

尽管Esteban Garcia的答案是正确的,但我希望通过代码片段改善配置,使代码看起来像这样:

在您的中config/services.php,保留如下所示的配置:

'mailgun' => [
        'domain' => env('MAILGUN_DOMAIN'),
        'secret' => env('MAILGUN_SECRET'),
    ],
Run Code Online (Sandbox Code Playgroud)

.env文件中,您可以在其中定义实际的mailgun凭证:

MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=sandbox1e...60.mailgun.org
MAILGUN_SECRET=key-146...419
Run Code Online (Sandbox Code Playgroud)

  • 不确定这是否是因为更新,但在 laravel7 中应该是:`MAIL_MAILER=mailgun` (2认同)