2017-03-17 16 views
2

我在發送環境中將Laravel的郵件發送到SendGrid API時遇到問題。覆蓋Laravel Mailer的setGlobalTo

問題是我在我的mail.php配置文件中設置了一個全局TO,這樣發送的所有電子郵件都轉到該地址。

但是Mailer類的setGlobalTo()函數實際上將相同的電子郵件設置爲TO,CC和BCC。

SendGrid他端點不接受重複的電子郵件,所以它拋出一個錯誤

如果我評論的2線,設置了CC,BCC會像它被固定:

protected function setGlobalTo($message){ 
    $message->to($this->to['address'], $this->to['name'], true); 
    //$message->cc($this->to['address'], $this->to['name'], true); 
    //$message->bcc($this->to['address'], $this->to['name'], true); 
} 

但是一個供應商文件,所以,問題是...

如何在發送我的電子郵件之前在開發環境中輕鬆覆蓋該方法或取消設置cc和密件抄送?

謝謝!

+0

哪個版本的Laravel的是什麼? – TheFallen

+0

5.4,實際上它是流明,但我使用郵件依賴 –

回答

3

我解決它偵聽Illuminate\Mail\Events\MessageSending事件(這引發之前實際發送郵件)和取消CC和BCC如果有globalTo地址設置

namespace App\Listeners; 

use Illuminate\Mail\Events\MessageSending; 
use Illuminate\Support\Facades\Config; 

class MessageSendingListener { 

    public function handle(MessageSending $swiftMessage) { 
     $globalTo = Config::get('mail.to.address'); 
     if (isSet($globalTo)) { 
      $swiftMessage->message->setBcc([]); 
      $swiftMessage->message->setCc([]); 
     } 
    } 
}