2016-04-24 78 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字符串。我现在将图像作为附件而不是内联。 –

相关问题