我使用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正确编码为图像:
它只显示像一张图片,但没有内容。我已经验证了base64字符串,它是正确的。
可能出现了什么错误?
Laravel邮件文档建议在消息构建器中使用以下内容:
但我有点不知道如何正确操作。另一个选项是将base64字符串即时转换为图像,并将其作为附件发送给用户,但我无法将图像存储到服务器上,因此必须在php中将其转换为图像,并通过laravel mailer发送它而没有实际的文件路径。
请指教。
<img src=somelongstring>
,而你可能想要的是<img src="somelongstring">
- 这可能是原因吗? - Joel Hinz