我正在使用Laravel发送电子邮件,纯文本效果很好。但是,我在将图像附加到电子邮件时遇到问题。到目前为止,图像已作为Base64字符串存储在数据库中。
这是在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 mailer。
请指教
您必须先对图像进行解码,如下所示:
$message->embedData(base64_decode($data['photos'][$x]), 'Blah')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句