2016-04-24 120 views
1

我使用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到圖像:

laravel

它只是顯示就好像一張圖片在那裏,但沒有內容。我已經驗證了基本64字符串,它是正確的。

什麼可能是錯誤?

Laravel郵件文檔說,使用像這樣的消息建設者:

laravel mailer

,但我有點失去了該怎麼做正確。另一種選擇是將base64字符串轉換爲圖像,並將其作爲附件發送給用戶,但無法將圖像存儲到服務器中,因此必須將其轉換爲php中的圖像併發送沒有實際文件路徑的laravel郵件程序。

請告知

+0

看起來對我來說,這將導致''而你可能想'' - 可以說是原因? –

+0

@JoelHinz我嘗試過,但仍然存在Gmail問題。它只是用base64字符串顯示完整的img源標籤 –

回答

3

你必須像這樣第一解碼:

$message->embedData(base64_decode($data['photos'][$x]), 'Blah') 
+0

這就是問題所在。我沒有解碼base64字符串。我現在將圖像作爲附件而不是內聯。 –

相關問題