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

Метод attachments

Метод attachments класса Mailable используется для определения вложений, которые будут добавлены к письму. Внутри метода необходимо вернуть массив, содержащий определения вложений. Каждое вложение может быть добавлено с помощью методов attach, attachFromStorage или attachData. Если вы используете метод attachments, вы получаете полный контроль над всеми вложениями письма.

Синтаксис

<?php use IlluminateMailMailablesAttachment; protected function attachments(): array { return [ Attachment::fromPath('/path/to/file.pdf') ->as('filename.pdf') ->withMime('application/pdf'), ]; } ?>

Пример

Давайте создадим класс письма с вложением файла:

<?php namespace AppMail; use IlluminateBusQueueable; use IlluminateMailMailable; use IlluminateMailMailablesContent; use IlluminateMailMailablesEnvelope; use IlluminateMailMailablesAttachment; use IlluminateQueueSerializesModels; class InvoiceMail extends Mailable { use Queueable, SerializesModels; public function envelope(): Envelope { return new Envelope( subject: 'Your Invoice', ); } public function content(): Content { return new Content( view: 'emails.invoice', ); } protected function attachments(): array { return [ Attachment::fromPath(storage_path('app/invoices/invoice_123.pdf')) ->as('invoice_123.pdf') ->withMime('application/pdf'), ]; } } ?>

Пример

Давайте добавим несколько вложений разных типов:

<?php namespace AppMail; use IlluminateBusQueueable; use IlluminateMailMailable; use IlluminateMailMailablesContent; use IlluminateMailMailablesEnvelope; use IlluminateMailMailablesAttachment; use IlluminateQueueSerializesModels; class ReportMail extends Mailable { use Queueable, SerializesModels; public function envelope(): Envelope { return new Envelope( subject: 'Monthly Report', ); } public function content(): Content { return new Content( view: 'emails.report', ); } protected function attachments(): array { return [ Attachment::fromPath(storage_path('app/reports/monthly.pdf')) ->as('monthly_report.pdf') ->withMime('application/pdf'), Attachment::fromPath(storage_path('app/reports/data.csv')) ->as('data.csv') ->withMime('text/csv'), Attachment::fromPath(storage_path('app/reports/cover.jpg')) ->as('cover.jpg') ->withMime('image/jpeg'), ]; } } ?>

Пример

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

<?php namespace AppMail; use IlluminateBusQueueable; use IlluminateMailMailable; use IlluminateMailMailablesContent; use IlluminateMailMailablesEnvelope; use IlluminateMailMailablesAttachment; use IlluminateQueueSerializesModels; use IlluminateSupportFacadesStorage; class DocumentMail extends Mailable { use Queueable, SerializesModels; protected $documentId; public function __construct($documentId) { $this->documentId = $documentId; } public function envelope(): Envelope { return new Envelope( subject: 'Your Document', ); } public function content(): Content { return new Content( view: 'emails.document', ); } protected function attachments(): array { $path = "documents/document_{$this->documentId}.pdf"; if (Storage::disk('public')->exists($path)) { return [ Attachment::fromStorage($path) ->as("document_{$this->documentId}.pdf") ->withMime('application/pdf'), ]; } return []; } } ?>

Пример

Давайте отправим письмо с вложениями через фасад Mail:

<?php namespace AppHttpControllers; use AppMailInvoiceMail; use IlluminateSupportFacadesMail; class MailController extends Controller { public function sendInvoice() { $res = Mail::to('user@example.com')->send(new InvoiceMail()); if ($res) { echo "Invoice sent successfully"; } else { echo "Failed to send invoice"; } } } ?>

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

"Invoice sent successfully"

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

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