我已经创建了一些功能来管理电子邮件活动。我使用summernote编辑电子邮件模板。
像大多数编辑器一样,Summernote将图像存储为base64编码的图像标签。
我遇到的问题是,当我要发送电子邮件时,大多数邮件客户端都不呈现base64图像标签。因此,我需要使用:
<img src="{{ $message->embed($pathToFile) }}"> or <img src="{{ $message->embedData($data, $name) }}">
根据Laravel文档:https://laravel.com/docs/5.7/mail#inline-attachments
问题在于邮件类需要设置视图
return $this->from('example@example.com')->view('emails.orders.shipped');
将summernote的嵌入式图像放入电子邮件视图的最佳方法是什么? (请注意,电子邮件中可以包含多个图像,并且每个模板都不同)
当前的邮件功能基本上希望您的视图已经具有嵌入功能。但是在这种情况下,我需要动态设置它。
答案 0 :(得分:0)
您可以将图像路径传递给邮件类别。
email.blade.php
<img src="{{ $message->embed($pathToFile) }}">
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class OrderShipped extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($pathToFile)
{
$this->pathToFile = $pathToFile;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('example@example.com')->view('mails.test')->with(['pathToFile' => $this->pathToFile]);
}
}
还有您的控制器
public function foo()
{
Mail::to('asd@gmail.com')->send(new OrderShipped('favicon.ico'));
return true;
}
您将得到类似
的结果答案 1 :(得分:0)
我要做的唯一一件事就是隔离出summernote值中的图像(从textarea保存的数据),然后将它们重新创建为磁盘上的图像。然后使用已写入动态视图的图像路径(embed($ pathToFile)}}“>动态生成视图,然后将该动态视图注入电子邮件中。