Laravel队列邮件文件

时间:2018-03-20 15:52:16

标签: php laravel queue laravel-5.1

我一直试图从直接发送电子邮件转移到将其添加到Laravel Queue,并且我注意到如果电子邮件包含任何文件,它实际上并不喜欢处理它。

例如,如果我要直接发送电子邮件,此示例可以正常工作,但如果我想将其添加到Queue则不会,因为它不会序列化$file变量。< / p>

$this->mail->queue('emails.contact-us',compact('data'), function($message) use($files)
    {
        $message->from('email@mail.co.uk', 'Test Subject');
            foreach($files as $file){
                $message->attach($file->getRealPath(),array(
                        'as' => $file->getClientOriginalName(),
                        'mime' => $file->getMimeType()
                ));
            }
    });

如果我尝试getFileContents,将所有数据存储到变量并将变量传递给Queue,则会创建Job,而不是Json它应该生成的有效负载数据,它会将0添加到payload列。

所以我的问题是,有没有人以前处理过这种情况?我曾考虑过临时添加文件,但这似乎不是一个好的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以使用attachData,只需将文件数据和名称传递给它

public class bimModel
{
    public string name { get; set; }
    public string material { get; set; }
    public string tag { get; set; }
    public string contentType { get; set; }
}

请查看此内容以获取更深入的信息:https://laracasts.com/discuss/channels/laravel/sending-email-with-a-pdf-attachment

编辑:尝试使用Base64编码

$message->attachData($data, $name, array $options = []);