2017-07-11 115 views
0

我建立了一個發送兩封電子郵件而不是一封的聯繫表。這裏的控制器:爲什麼Laravel發送郵件兩次?

<?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(); 
    } 
} 

這裏的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]); 
    } 
} 

這是我的測試環境,所以我捕捉通過Mailtrap.io傳出郵件和隊列設置爲同步。我已經嘗試刪除Queueable特性,但是這並沒有改變任何事情,因爲它不會排隊。我也嘗試將它放在隊列中,當隊列最後再次處理電子郵件時,獲取兩封已發送的電子郵件。

任何想法?

+0

'公共函數發送(ContactFormRequest $ request)' 是這一個帖子還是得到? –

+0

這是一條後路線。 ('contact-form','ContactController @ send') - > name('contact.form');' – Azeame

回答

0

好的,找到了解決方法。當我在mail.php配置文件中刪除'to'條目,並在Mail :: send/queue命令中硬編碼目標地址,而不是通過config('mail.to')獲取目的地時,我收到1封電子郵件。如果我使用config()來定義收件人,我會收到2封電子郵件。希望這可以幫助。