Как встроить данные base64 в Laravel 6 электронное письмо - PullRequest
0 голосов
/ 15 января 2020

Я являюсь строкой для встраивания необработанных данных изображения в любой почтовый клиент, используя Laravel 6 Встраивание вложенных необработанных данных.

В моем файле test.blade. php:

<body>
    Here is an image from raw data:

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

public function build()
    {
        return $this->view('emails.test')
                    ->with([
                        'data' => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA.....',
                        'name' => 'foobar',
                       ]);
    }

Я создал маршрут для просмотра электронной почты, и изображение не будет отображаться. Если я это сделаю:

[...]
<img src="{{ $data }}">

Изображение показывает (в браузере), но не в электронной почте. Справедливо. Как заставить $message->embedData($data, $name) работать? Я что-то упустил из документов?

1 Ответ

0 голосов
/ 15 января 2020

Мне пришлось проанализировать мой пост о загрузке изображений и посмотреть, что я там делал. Итак, версия php:

        $data = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA.....";
        $img = preg_replace('/^data:image\/\w+;base64,/', '', $data);
        $type = explode(';', $data)[0];
        $type = explode('/', $type)[1];
        $img = str_replace(' ', '+', $img);
        $data = base64_decode($img);
        return $this->view('emails.test')
                    ->with([
                        'name' => 'foobar',
                        'type' => $type, // png, jpg etc
                        'base64Data' => $data
        ]);

Затем в шаблоне лезвия:

<img src="{{ $message->embedData($base64Data, $name . '.' . $type) }}">

Надеюсь, это поможет другим, кто ищет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...