Laravel Mailer:在base64中附加/显示图像在Gmail中无法正常工作

时间:2017-06-25 17:58:37

标签: php laravel email gmail

我正在尝试使用base64附加图片/在电子邮件模板中显示图片,以便我不必存储文件,但我没有运气。

图片在Gmail中成功附加了适当的文件大小/名称,但图片已损坏且从未真正显示过。

电子邮件模板上img标记中设置的图片也无法正常显示。

两个例子的

Rubric:

data字段是base64字符串,如下所示:data:image/gif;base64,AJHDJsdlksdAK....

name是文件的名称。

mime就像image/gif

这是我正在尝试的模板(第一个显示一个损坏的图像,第二个使用正确的base64字符串呈现图像,但所有内容都是纯文本而不是被解释为HTML):

<img src="{{$message->embedData($inputs['picture']['data'], $inputs['picture']['name'])}}">
<img src="{{$inputs['picture']['data']}}">

这是Mailer类:

return $this->from('myemail@domain.com')
                ->attachData($picture['data'], $picture['name'], [
                    'mime' => $picture['mime']
                ])
                ->view('form.submitted')
                ->with($data);

我在这里做错了什么?我完全按照Laravel Documentation for mail under Attachments中显示的内容完成了所有操作。

1 个答案:

答案 0 :(得分:1)

一旦附加,您必须解码数据: ->attach(base64_decode($picture['data']), 'Blah'))