Laravel конвертирует base64 img во встроенные вложения перед отображением представления для почты - PullRequest
0 голосов
/ 04 мая 2020

Я храню почтовые шаблоны в БД. Некоторые из этих шаблонов содержат изображение в кодировке base64 (пользователь определяет их с помощью редактора summernote). Из-за того, что многие почтовые клиенты не поддерживают изображения с кодировкой base64, я хотел бы преобразовать их в необработанные данные изображений и встроенное вложение, используя $message->embedData(). Я провел несколько тестов, и этот тип встроенных вложений корректно виден среди многих клиентов.

Я уже могу вырезать эти изображения из строки, полученной из БД, и заменить ее чем-то другим в моем почтовом классе. Я также могу конвертировать их и прикрепить (как обычный вложение) к сообщению для проверки. Но как их прикрепить встроенным? Единственный способ, которым я думаю, что это может быть сделано, это делать все это в пределах видимости, потому что переменная $message доступна там, но это будет выглядеть не очень хорошо.

У кого-нибудь есть мысли?

Мой Шаблон лезвия выглядит следующим образом (mailTemplate.blade. php):

<html>
   <body>
      {!! $body !!} {{-- string directly from DB --}}
   </body>
</html>

, контроллер:

public function sendMail(Notification $notification)
{
   \Mail::to($email)
      ->send(new NotificationMail($notification));
}

, отправляемый по почте:

public function __construct(Notification $notification)
{
   $this->body = $notification->body;
   $this->subject = $notification->subject;
}

public function build()
{
    return $this
       ->from('do-not-reply@example.com')
       ->subject($this->subject)
       ->view('mails.mailTemplate');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...