如果组合laravel通知&amp ;;为什么发件人的电子邮件中没有密件抄送? Laravel可邮寄?

时间:2017-10-20 23:27:14

标签: laravel laravel-5 laravel-5.3 laravel-mail laravel-notification

我使用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发送邮件

enter image description here

然后我检查来自电子邮件发件人的gmail上发送的邮件菜单,结果如下:

enter image description here

看起来像密送电子邮件

如果我使用上面的代码从Laravel发送邮件,结果是:

我检查来自电子邮件发件人的已发送邮件菜单,结果如下:

enter image description here

看起来没有电子邮件密送

我想要的是:我想在laravel上的发件人电子邮件中显示密送电子邮件

我该怎么办?

1 个答案:

答案 0 :(得分:1)

这不可能。

Laravel使用SwiftMailer进行SMTP邮件。当您在BCC字段中发送包含地址列表的电子邮件时,SwiftMailer实际上会拆分该列表并向每个地址发送单独的电子邮件。

因此,SwiftMailer不会发送一封带有标题BCC: test1@gmail.com, test2@gmail.com, test3@gmail.com的电子邮件,而是会发送三封单独的电子邮件,其中包含标题BCC: test1@gmail.comBCC: test2@gmail.comBCC: test3@gmail.com。< / p>

由于您在Gmail中收到的电子邮件中没有BCC标题中的地址列表,因此无法向您显示该列表。

现在,我说它不可能,但技术上,如果你愿意的话,你可以分叉SwiftMailer存储库,更新代码以不将BCC收件人拆分成单独的电子邮件,以及然后弄清楚如何让Laravel使用你的定制版SwiftMailer,但我非常怀疑这是值得的。