Отправка вложений электронной почты с помощью Laravel Excel: подробное руководство

Отправка вложений электронной почты — обычное требование в веб-приложениях, и Laravel Excel предоставляет удобный и простой способ выполнить эту задачу в Laravel. В этой статье мы рассмотрим различные способы прикрепления файлов Excel к электронным письмам с помощью Laravel Excel, а также приведем примеры кода.

Метод 1: простое вложение
Самый простой способ прикрепить файл Excel к электронному письму — использовать метод attach(), предоставляемый классом MailableLaravel. Вот пример:

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class SendExcelEmail extends Mailable
{
    use Queueable, SerializesModels;
    public function build()
    {
        return $this->view('emails.excel')
                    ->attach('path/to/excel/file.xlsx');
    }
}

Метод 2: экспорт и прикрепление
Laravel Excel позволяет легко экспортировать данные в файлы Excel. Затем вы можете прикрепить созданный файл Excel к электронному письму. Вот пример:

use App\Exports\UsersExport;
use Illuminate\Support\Facades\Mail;
$excelFile = (new UsersExport())->store('temp', 'public');
Mail::send([], [], function ($message) use ($excelFile) {
    $message->to('recipient@example.com')
            ->subject('Excel Attachment')
            ->attach(storage_path('app/public/' . $excelFile), [
                'as' => 'users.xlsx',
                'mime' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
            ]);
});
// Delete the temporary file after sending the email
Storage::disk('public')->delete($excelFile);

Метод 3: настройка экспорта и вложения Excel
Laravel Excel предоставляет различные параметры настройки для экспорта и прикрепления файлов Excel. Вы можете указать определенные листы, столбцы, стиль и многое другое. Вот пример:

use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Mail;
$excelFile = Excel::raw(new UsersExport, function($excel) {
    $excel->sheet('Sheet 1', function($sheet) {
        // Customization options
        $sheet->setColumnFormat([
            'A' => '@', // Format column A as text
            'B' => '0.00', // Format column B as a number with two decimal places
        ]);
    });
})->store('temp', 'public');
Mail::send([], [], function ($message) use ($excelFile) {
    $message->to('recipient@example.com')
            ->subject('Excel Attachment')
            ->attach(storage_path('app/public/' . $excelFile), [
                'as' => 'users.xlsx',
                'mime' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
            ]);
});
// Delete the temporary file after sending the email
Storage::disk('public')->delete($excelFile);

В этой статье мы рассмотрели различные способы прикрепления файлов Excel к электронным письмам с помощью Laravel Excel. Мы рассмотрели простые вложения, экспорт и вложение, а также настройку процесса экспорта и вложения. С помощью этих методов вы можете легко отправлять файлы Excel в виде вложений к электронной почте в своих приложениях Laravel, повышая функциональность и производительность ваших проектов.