РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
829 of 1392 menu

Метод attachFromStorage

Метод attachFromStorage применяется к объекту Mailable и позволяет прикрепить к письму файл, который находится в файловой системе, настроенной через Laravel Storage. Первым параметром передаётся путь к файлу в хранилище, вторым - имя файла, которое будет отображаться в письме, третьим - опциональные настройки (mime-тип, диск и другие параметры). Если диск не указан, используется диск по умолчанию.

Синтаксис

<?php $mailable->attachFromStorage($path, $name, $options); ?>

Пример

Давайте создадим класс письма и прикрепим к нему файл из хранилища:

<?php namespace AppMail; use IlluminateBusQueueable; use IlluminateMailMailable; use IlluminateMailMailablesContent; use IlluminateQueueSerializesModels; class OrderConfirmation extends Mailable { use Queueable, SerializesModels; public function __construct() { // } public function envelope() { return new Envelope( subject: 'Order Confirmation', ); } public function content() { return new Content( view: 'emails.order-confirmation', ); } public function attachments() { return [ $this->attachFromStorage( 'invoices/invoice_123.pdf', 'invoice_123.pdf', ['mime' => 'application/pdf'] ), ]; } } ?>

Пример

Прикрепим файл из хранилища с указанием диска и дополнительных параметров:

<?php namespace AppMail; use IlluminateBusQueueable; use IlluminateMailMailable; use IlluminateMailMailablesContent; use IlluminateQueueSerializesModels; class UserReport extends Mailable { use Queueable, SerializesModels; protected $userId; public function __construct($userId) { $this->userId = $userId; } public function envelope() { return new Envelope( subject: 'User Report', ); } public function content() { return new Content( view: 'emails.user-report', ); } public function attachments() { return [ $this->attachFromStorage( 'reports/user_' . $this->userId . '.csv', 'user_data.csv', [ 'mime' => 'text/csv', 'disk' => 's3', 'as' => 'user_report.csv' ] ), ]; } } ?>

Пример

Отправим письмо с несколькими прикреплёнными файлами из разных дисков:

<?php namespace AppMail; use IlluminateBusQueueable; use IlluminateMailMailable; use IlluminateMailMailablesContent; use IlluminateQueueSerializesModels; class MultiAttachmentMail extends Mailable { use Queueable, SerializesModels; public function __construct() { // } public function envelope() { return new Envelope( subject: 'Multiple Attachments', ); } public function content() { return new Content( view: 'emails.attachments', ); } public function attachments() { return [ $this->attachFromStorage( 'files/document.pdf', 'document.pdf' ), $this->attachFromStorage( 'images/photo.jpg', 'photo.jpg', ['mime' => 'image/jpeg', 'disk' => 'public'] ), $this->attachFromStorage( 'archive/data.zip', 'backup.zip', ['mime' => 'application/zip'] ), ]; } } ?>

Пример

Отправим письмо из контроллера с динамическим прикреплением файла:

<?php namespace AppHttpControllers; use AppMailUserReport; use IlluminateSupportFacadesMail; class ReportController extends Controller { public function sendReport($userId) { $mail = new UserReport($userId); Mail::to('user@example.com')->send($mail); $res = 'Email sent successfully'; echo $res; } } ?>

Результат выполнения кода:

"Email sent successfully"

Смотрите также

  • метод attach,
    который прикрепляет файл по указанному пути
  • метод attachData,
    который прикрепляет сырые данные как файл
  • метод attachments,
    который возвращает массив всех вложений
  • метод send,
    который отправляет письмо получателю
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить