我使用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郵件程序。
請告知
看起來對我來說,這將導致''而你可能想'' - 可以說是原因? –
@JoelHinz我嘗試過,但仍然存在Gmail問題。它只是用base64字符串顯示完整的img源標籤 –