0

我使用Laravel 5.3如果聯合laravel通知和Laravel郵寄,爲什麼發件人的電子郵件中沒有bcc?

我的控制器是這樣的:

auth()->user()->notify(new ConfirmOrder($invoice)); 

我通知如下:

<?php 
... 
class ConfirmOrder extends Notification implements ShouldQueue, ShouldBroadcast 
{ 
    use Queueable; 
    private $data; 
    public function __construct($data) 
    { 
     $this->data = $data; 
    } 
    public function via($notifiable) 
    { 
     return ['mail']; 
    } 
    public function toMail($notifiable) 
    { 
     $mail_myshop = explode(',', config('app.mail_myshop')); 
     return (new ConfirmOrderMail($this->data, $notifiable)) 
      ->to($notifiable->routeNotificationFor('mail')) 
      ->bcc($mail_myshop) 
      ->subject('Thanks'); 
    } 
} 

我可郵寄這樣的:

<?php 
... 
class ConfirmOrderMail extends Mailable 
{ 
    use Queueable, SerializesModels; 
    public $data; 
    public $user; 
    public function __construct($data, $user) 
    { 
     $this->data = $data; 
     $this->user = $user; 
    } 
    public function build() 
    { 
     return $this->view('vendor.notifications.mail.email-confirm-order',['data'=>$this->data, 'name' => $this->user->name]); 
    } 
} 

筆者結合通知和因爲laravel 5.3不支持bcc

它有效,但有一個缺點。電子郵件發件人沒有密送。例如,有3封密件抄送的電子郵件。它應該出現在發件人的電子郵件(如果我點擊Gmail發送的郵件,並點擊詳細,如果有使用的電子郵件BCC但沒有電子郵件BCC)

我設置我的發件人的電子郵件在ENV這樣的:

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

如何在發件人電子郵件(發送的郵件)上顯示密件抄送?

更新

我將添加我的問題的細節

如果我發送郵件通過Gmail這樣

enter image description here

然後我檢查發送的郵件Gmail郵件發件人的Gmail菜單,結果如下:

enter image description here

有看起來像BCC電子郵件

如果我發送郵件從Laravel與我上面的代碼,結果:

我發送的郵件菜單上檢查從郵件發送者,結果像這樣:

enter image description here

有看起來像沒有電子郵件BCC

我要的是:我想在laravel發件人的電子郵件顯示BCC電子郵件

我該怎麼辦呢?

+0

其被稱爲* blind * carbon copy的原因。 –

+0

@Daniel A. White,你是什麼意思?我不明白 –

+0

_blind_,因爲在你看不到BCC是如何。但是,如果我的理解正確無誤,那麼您是通過** Gmail帳戶發送電子郵件**,因此您是發件人,並且希望在發送的郵件中的電子郵件中看到BCC用戶? – fubar

回答

1

這是不可能的。

Laravel將SwiftMailer用於SMTP郵件。當您在BCC字段中發送包含地址列表的電子郵件時,SwiftMailer實際上會打破該列表並向每個地址發送一封單獨​​的電子郵件。

所以,而不是發送一個電子郵件標題BCC: [email protected], [email protected], [email protected],SwiftMailer將發送頭BCC: [email protected]BCC: [email protected]三個獨立的電子郵件和BCC: [email protected],分別。

由於您在Gmail中收到的電子郵件中沒有BCC標題中的地址列表,因此無法向您顯示列表。

現在,我說這是不可能的,但技術上,如果你願意,你可以用叉子叉SwiftMailer庫,更新代碼不分裂BCC收件人到單獨的電子郵件,然後找出如何讓Laravel到使用你的SwiftMailer的定製版本,但我非常懷疑這是值得的努力。

+0

我很好奇爲什麼當發送郵件服務器已經能夠處理BCC郵件時,SwiftMailer會這樣做。看來你已經挖掘到源頭來找到這個。你有鏈接到相關的代碼/行嗎? – fubar

+0

@patricus,如果你回答那就意味着它不能被執行。如果我使用laravel 5.4或5.5,它可以完成或相同? –

+1

@fubar我認爲一般的想法是,SwiftMailer不能保證SMTP服務器將刪除BCC標題或客戶端不會顯示BCC標題。如果既不修改標題,也不會爲每個收件人提供BCC地址的完整列表,從而破壞目的。因此,爲了符合BCC的工作方式,它專門爲每個BCC地址發送一封單獨​​的電子郵件。 – patricus