使用Laravel发送Base64图像

Wil*_*ado 2 php html-email phpmailer laravel laravel-5.2

我正在使用Laravel发送电子邮件,纯文本效果很好。但是,将图像附加到电子邮件时出现问题。到目前为止,图像已作为Base64字符串存储在数据库中。

这是在Laravel中调用Mail门面的代码:

            Mail::queue('emails.infraction', $data, function($message) use ($email){
            $message -> from($fromEmail, 'Blah);
            $message -> to($toEmail) -> subject('Testing');

        });
Run Code Online (Sandbox Code Playgroud)

基本上,$ data变量包含我将在发送的HTML电子邮件中显示的所有信息。在电子邮件中显示变量时,我可以很好地访问变量,但是在将base64图像附加到电子邮件中时遇到问题。

到目前为止,这是我尝试过的:

        Evidence of Intraction:</p>
            <?php 
                $elementCount  = count($photos);
                for($x=0; $x<$elementCount; $x++){
                    echo '<p style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; margin-left: 80px;">';
                    echo "<img src=" . $message->embedData($data['photos'][$x], 'Blah') . ">";
                    echo "</p>";
                }
            ?>
Run Code Online (Sandbox Code Playgroud)

但是,正如您在此处看到的那样,gmail无法正确地将rawDataString编码到图像中:

拉拉韦尔

它只是显示好像有图片,而不显示内容。我已经验证了基本的64位字符串,它是正确的。

可能是什么错误?

Laravel Mail Documentation表示在消息生成器中使用以下代码:

laravel mailer

但我对如何正确执行操作有些迷失。另一个选择是将base64字符串即时转换为图像并将其作为附件发送给用户,但我无法将图像存储到服务器中,因此必须将其转换为php中的图像并通过发送没有实际文件路径的laravel mailer。

请指教

Roj*_*men 5

您必须像这样首先解码图像:

$message->embedData(base64_decode($data['photos'][$x]), 'Blah')
Run Code Online (Sandbox Code Playgroud)