如果联合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这样:
然后我检查发送的邮件Gmail邮件发件人的Gmail菜单,结果如下:
有看起来像BCC电子邮件
如果我发送邮件从Laravel与我上面的代码,结果:
我发送的邮件菜单上检查从邮件发送者,结果像这样:
有看起来像没有电子邮件BCC
我要的是:我想在laravel发件人的电子邮件显示BCC电子邮件
我该怎么办呢?
这是不可能的。
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的定制版本,但我非常怀疑这是值得的努力。
我很好奇为什么当发送邮件服务器已经能够处理BCC邮件时,SwiftMailer会这样做。看来你已经挖掘到源头来找到这个。你有链接到相关的代码/行吗? – fubar
@patricus,如果你回答那就意味着它不能被执行。如果我使用laravel 5.4或5.5,它可以完成或相同? –
@fubar我认为一般的想法是,SwiftMailer不能保证SMTP服务器将删除BCC标题或客户端不会显示BCC标题。如果既不修改标题,也不会为每个收件人提供BCC地址的完整列表,从而破坏目的。因此,为了符合BCC的工作方式,它专门为每个BCC地址发送一封单独的电子邮件。 – patricus
其被称为* blind * carbon copy的原因。 –
@Daniel A. White,你是什么意思?我不明白 –
_blind_,因为在你看不到BCC是如何。但是,如果我的理解正确无误,那么您是通过** Gmail帐户发送电子邮件**,因此您是发件人,并且希望在发送的邮件中的电子邮件中看到BCC用户? – fubar