如何在Laravel邮件中发送多个附件

时间:2018-09-18 03:52:42

标签: php laravel

我创建了两个单独的Excel文件$recent_signup_file, $ddr_failed_file,并附加在laravel mailer上

Mail::send('emails.weeklyreports', ['data' => $data], function($message) use ($recipient, $subject_date, $recent_signup_file, $ddr_failed_file) {
   $message->from('support@whitebelt.co', 'Whitebelt.co Support');
   $message->to($recipient)->subject('Weekly Report '.$subject_date);
   $message->addAttachment($recent_signup_file->store("xlsx",false,true)['full']);
   $message->addAttachment($ddr_failed_file->store("xlsx",false,true)['full']);
});

但是它给了我重复的excel文件,这是对的还是我错过了什么,任何人都可以帮助我。

我怎么办?

1 个答案:

答案 0 :(得分:1)

您正在使用哪个版本的Laravel?如果您使用的是Laravel 5.4+,则应该使用Mailable,如下所示:

Mail::to($recipient)->send(new WeeklyReport($data));

在WeeklyReport可发送邮件中,您将附加文件并将数据数组传递到如下视图:

class WeeklyReport extends Mailable
{
    use Queueable, SerializesModels;

    public $data;

    public function __construct($data)
    {
         $this->data = $data;
    }

    public function build()
    {
        return $this->view('emails.weeklyreports', $this->data)
                ->from('support@whitebelt.co', 'Whitebelt.co Support')
                ->attach($this->data['recent_signup_file']->store("xlsx",false,true)['full'])
                ->attach($this->data['ddr_failed_file']->store("xlsx",false,true)['full']);
    }
}

请参阅Laravel文档here

所有这些都假定您用来创建excel工作表的函数实际上按预期工作。由于我们在这里看不到该代码,因此我无法对其功能发表评论。但是以上是使用Laravel 5.4+附加文件的正确方法。