如果联合laravel通知和Laravel邮寄,为什么发件人的电子邮件中没有bcc?

问题描述:

我使用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

这是不可能的。

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