使用Laravel发送Base64图像
问题描述:
我使用Laravel发送电子邮件和纯文本正常工作。但是,我在将图像附加到电子邮件时出现问题。截至目前,图像以Base64字符串的形式存储在数据库中。使用Laravel发送Base64图像
这是在Laravel调用邮件门面代码:
Mail::queue('emails.infraction', $data, function($message) use ($email){
$message -> from($fromEmail, 'Blah);
$message -> to($toEmail) -> subject('Testing');
});
基本上$ 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>";
}
?>
但你可以在这里看到,Gmail不正确编码rawDataString到图像:
它只是显示就好像一张图片在那里,但没有内容。我已经验证了基本64字符串,它是正确的。
什么可能是错误?
Laravel邮件文档说,使用像这样的消息建设者:
,但我有点失去了该怎么做正确。另一种选择是将base64字符串转换为图像,并将其作为附件发送给用户,但无法将图像存储到服务器中,因此必须将其转换为php中的图像并发送没有实际文件路径的laravel邮件程序。
请告知
答
你必须像这样第一解码:
$message->embedData(base64_decode($data['photos'][$x]), 'Blah')
+0
这就是问题所在。我没有解码base64字符串。我现在将图像作为附件而不是内联。 –
看起来对我来说,这将导致'
'而你可能想'
' - 可以说是原因? –
@JoelHinz我尝试过,但仍然存在Gmail问题。它只是用base64字符串显示完整的img源标签 –