我正在使用Laravel发送电子邮件和纯文本工作正常。但是,我在将图像附加到电子邮件时遇到问题。截至目前,图像作为Base64字符串存储在DB中。
这是在Laravel中调用Mail外观的代码:
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 Mail Documentation说在消息构建器中使用类似的东西:
但我对如何正确地做到这一点感到有些失落。另一种选择是将base64字符串动态转换为图像并将其作为附件发送给用户,但我无法将图像存储到服务器中,因此必须将其转换为php中的图像并通过它发送没有实际文件路径的laravel邮件程序。
请告知
答案 0 :(得分:4)
您必须首先解码图像:
$message->embedData(base64_decode($data['photos'][$x]), 'Blah')