Отправка вложений электронной почты — обычное требование в веб-приложениях, и Laravel Excel предоставляет удобный и простой способ выполнить эту задачу в Laravel. В этой статье мы рассмотрим различные способы прикрепления файлов Excel к электронным письмам с помощью Laravel Excel, а также приведем примеры кода.
Метод 1: простое вложение
Самый простой способ прикрепить файл Excel к электронному письму — использовать метод attach()
, предоставляемый классом Mailable
Laravel. Вот пример:
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, повышая функциональность и производительность ваших проектов.