Подтвердить что ты не робот

Как вы добавляете изображения в электронные письма, созданные новой службой уведомлений Laravel 5.3?

Laravel 5.3 представляет новую службу под названием notifications, позволяя создавать письма (среди других уведомлений) с помощью простого плавного синтаксиса:

    return (new MailMessage)
            ->greeting('Hello!')
            ->line('One of your invoices has been paid!')
            ->action('View Invoice', $url)
            ->line('Thank you for using our application!');

Что такое красноречивый подход к добавлению изображений в уведомления по электронной почте? Я уже опубликовал файлы поставщиков, чтобы изменить базовый шаблон.

Мои мысли в настоящее время стоят на:

  • Расширьте Illuminate\Notifications\Messages\SimpleMessage как новый локальный класс по строкам SimpleMediaMessage с несколькими дополнительными методами (пример: ->image(src, url, alt))
  • Измените базовый шаблон (или создайте один из них для SimpleMediaMessage, который будет проходить через массив мультимедиа, созданный с помощью ->image
  • Наконец, зарегистрируйте настраиваемый канал, чтобы уведомления могли отправлять уведомления с изображениями.

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

Отредактировано для ясности

Когда я обращаюсь к изображениям, я имею в виду изображения баннера и трейла, которые видны в самом сообщении (а не как отдельное приложение).

Прилагаемое изображение показывает a) красным, что может быть достигнуто в настоящее время, и b) в фиолетовом, что я ищу.

введите описание изображения здесь

Второе редактирование

Перечитав ответы, опубликованные до сих пор, особенно @Erics, я вижу, что с очень простой модификацией шаблона вы действительно можете сделать следующее:

->line("<img src='foo.example/bar.jpg' />")

Шаблон необходимо изменить, чтобы разрешить небезопасную разметку:

// Note this is in two spots - intro + outro
{{ $line }} --> becomes --> {!! $line !!} 

Недостатки этого метода:

  • Возможно, открыв проблему безопасности, вся причина использования {{}} через {!!!!}
  • Изображение не может использовать встроенные стили, если вы не делаете его вне шаблона электронной почты, например:

    - > line ( "< img style = 'max-width: 570px;/* все остальные нежелательные файлы, чтобы изображения выглядели нормально в электронной почте */' src= 'foo.example.bar.jpg'/" > " )

4b9b3361

Ответ 1

Как вы хотите присоединить? В письмах вы можете ссылаться на полный путь и просто добавлять его в представление в типичном формате HTML:

<img src="http://yoursite.com/path/to/image.png">

Если вы хотите сделать это реальным прикреплением к файлу, в MailMessage есть метод ->attach() и attachData. Они обычно используются для таких вещей, как PDF или вложения документов.

Если вы хотите присоединить и ссылаться на вложение в источнике, то я предполагаю, что вам нужно будет расширить класс, как вы упомянули, или вернуться к методу Laravel Mail::send.

Поскольку система уведомлений была спроектирована как простая и самоуверенная, я предполагаю, что они хотели охватить общие случаи использования, и гораздо проще использовать полные пути к изображениям и ссылаться на cid: стиль.

Ответ 2

Используйте функцию nl2br (''), чтобы сделать свое изображение, затем добавьте его в свой адрес электронной почты

$line =  nl2br('<img src="" />');
return (new MailMessage)
            ->greeting('Hello!')
            ->line('One of your invoices has been paid!')
            ->action('View Invoice', $url)
            ->line($line)
            ->line('Thank you for using our application!');