为什么 Laravel 会发送两次邮件?

Aze*_*ame 6 laravel laravel-mail laravel-5.3

我建立了一个联系表格,它发送两封电子邮件而不是一封。这是控制器:

<?php

namespace App\Http\Controllers;

use App\Http\Requests\ContactFormRequest;
use App\Mail\ClientContact;
use Illuminate\Support\Facades\Mail;

class ContactController extends Controller
{
    /**
     * It sends a contact request and returns
     * the user back to the contact form.
     * @param ContactFormRequest $request
     * @return mixed
     */
    public function send(ContactFormRequest $request)
    {
        Mail::send(new ClientContact($request->only(['name','email','message'])));
        session()->flash('success','Your message was sent successfully!');
        return redirect()->back();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是 ClientContact 邮件类

<?php

namespace App\Mail;

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

class ClientContact extends Mailable
{
    use Queueable, SerializesModels;
    /**
     * @var
     */
    public $message;


    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($message)
    {
        $this->message = $message;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this
            ->from(config('mail.from.address'))
            ->markdown('emails.client.contact', ['message' => $this->message]);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的测试环境,所以我通过 Mailtrap.io 捕获外发邮件,并将队列设置为同步。我已经尝试删除 Queueable 特性,但这并没有改变任何东西,因为它无论如何都没有排队。我也尝试将它放在队列中,当队列最终再次处理我的电子邮件时,收到两封已发送的电子邮件。

有任何想法吗?

小智 6

这是一个mailtrap问题,并且仅当您使用该bcc方法时。

  • 这实际上就是我的问题所在。 (2认同)

una*_*bat 3

好的,找到了解决方法。当我删除 mail.php 配置文件中的“to”条目,并在 Mail::send/queue 命令中硬编码目标地址而不是使用 config('mail.to') 获取目的地时,我收到 1 封电子邮件。如果我使用 config() 定义收件人,我会收到 2 封电子邮件。希望这可以帮助。