我使用Laravel 5.3
我的控制器是这样的:
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]);
}
}
我结合了通知和mailable,因为laravel 5.3不支持bcc
它有效,但有一个缺点。电子邮件发件人没有密件抄送。例如,有3封电子邮件的密送。它应该出现在发件人的电子邮件中(如果我点击gmail上的已发送邮件并单击详细信息,是否存在电子邮件密件抄送。但是没有电子邮件密件抄送)
我在env中设置我的发件人电子邮件:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=****@gmail.com
MAIL_PASSWORD=****
MAIL_ENCRYPTION=tls
如何在发件人电子邮件中显示密送(在已发送的邮件上)?
更新:
我将添加我的问题的详细信息
如果我通过gmail发送邮件:
然后我检查来自电子邮件发件人的gmail上发送的邮件菜单,结果如下:
看起来像密送电子邮件
如果我使用上面的代码从Laravel发送邮件,结果是:
我检查来自电子邮件发件人的已发送邮件菜单,结果如下:
看起来没有电子邮件密送
我想要的是:我想在laravel上的发件人电子邮件中显示密送电子邮件
我该怎么办?
答案 0 :(得分:1)
这不可能。
Laravel使用SwiftMailer进行SMTP邮件。当您在BCC字段中发送包含地址列表的电子邮件时,SwiftMailer实际上会拆分该列表并向每个地址发送单独的电子邮件。
因此,SwiftMailer不会发送一封带有标题BCC: test1@gmail.com, test2@gmail.com, test3@gmail.com
的电子邮件,而是会发送三封单独的电子邮件,其中包含标题BCC: test1@gmail.com
,BCC: test2@gmail.com
和BCC: test3@gmail.com
。< / p>
由于您在Gmail中收到的电子邮件中没有BCC
标题中的地址列表,因此无法向您显示该列表。
现在,我说它不可能,但技术上,如果你愿意的话,你可以分叉SwiftMailer存储库,更新代码以不将BCC收件人拆分成单独的电子邮件,以及然后弄清楚如何让Laravel使用你的定制版SwiftMailer,但我非常怀疑这是值得的。