我一直试图从直接发送电子邮件转移到将其添加到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
列。
所以我的问题是,有没有人以前处理过这种情况?我曾考虑过临时添加文件,但这似乎不是一个好的解决方案。
答案 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 = []);