【问题标题】:Laravel : image with base64 source ,not able to view in emailLaravel:带有base64源的图像,无法在电子邮件中查看
【发布时间】:2018-11-23 20:21:33
【问题描述】:

我正在使用 laravel 下面是我遵循的步骤,

  • 我正在使用编辑器向用户发送电子邮件,

  • 从编辑器我上传了图片,

  • 图片以base64格式上传

  • 我正在通过电子邮件将该编辑器内容发送给用户

我已检查 base64 字符串是否正确并显示图像 也可以用我的系统显示该图像

但是当我要通过电子邮件发送该图像时,

我看不到该图像。

我已经在image src属性中检查了那里,显示像 -

<img style="width:224px">

在 gmail 中,这里的 src 属性被删除了,但是我在发送电子邮件之前检查了那个标签,有 src 标签带有正确的 base64 编码字符串

请帮我在电子邮件中显示图片,

要发送邮件,我使用 laravel 自己的电子邮件配置,如下所示,

use App\Events\SendMail;

$mailData['toName']       = $toUserFullname;
$mailData['toEmail']      = $toEmail;
$mailData['fromName']     = $fromName;
$mailData['fromEmail']    = $fromEmail;
$mailData['emailSubject'] =  $templateData['email_subject'];
$mailData['emailContent'] = $templateData['email_body'];
\Event::fire(new SendMail($mailData));

【问题讨论】:

  • 可以把编辑器的内容粘贴到这里吗?

标签: php laravel email base64


【解决方案1】:

电子邮件中不太支持 Base64 编码的图像。大多数网络电子邮件客户端(包括 Gmail)不支持它们,并且在 Outlook 中完全被阻止。

所以我想到的第一个解决方案是在发送电子邮件之前从 base64 字符串创建实际的图像文件。类似这样的帮助:

$filename_path = md5(time().uniqid()).".jpg"; 
$decoded=base64_decode($base64_string_img); 
file_put_contents("path/to/save/image/".$filename_path,$decoded);

你也不应该忘记取消链接这些图片,以防你以后不需要它们。

您也可以尝试使用inline attachemnts

<img src="{{ $message->embedData($data, $name) }}">

【讨论】:

  • 感谢您的回答,这也是一种选择,但是否有可能在不将该图像上传到我们的服务器的情况下在电子邮件中显示图像
  • 我几乎可以肯定没有这样的选择。但是您可以上传图像,发送它,然后从您的服务器中删除。链接到附件图片就是这样。
  • 我正在使用编辑器上传图片,如果我从 html 获取图片并将其解码上传到服务器,但是我如何用 html 中的 url 替换该图片源以获取特定位置?
猜你喜欢
  • 2020-04-27
  • 2013-09-26
  • 1970-01-01
  • 2014-01-25
  • 2020-04-19
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 2014-02-16
相关资源
最近更新 更多