Email and Scheduled Spreadsheet Jobs
Deliver generated workbooks through SMTP and run recurring imports or exports through persistent schedules.
Updated
emailGeneratedExcel()scheduler()pdoScheduler()runScheduler()What you will learn
- Attach a generated workbook to a MIME email.
- Configure SMTP, SMTPS, or STARTTLS transport.
- Persist and execute recurring import/export schedules.
Email a generated workbook#
MnbExcel::emailGeneratedExcel(
MnbExcel::report($rows)->withHeader()->autoWidth(),
'manager@example.com',
'Daily sales report',
'The generated report is attached.',
[
'filename' => 'daily-sales.xlsx',
'smtp' => [
'host' => getenv('SMTP_HOST'),
'port' => 587,
'encryption' => 'starttls',
'username' => getenv('SMTP_USERNAME'),
'password' => getenv('SMTP_PASSWORD'),
],
]
);Create a file-backed schedule#
$scheduler = MnbExcel::scheduler(
__DIR__ . '/storage/schedule.json'
);
$scheduler->scheduleExport(
'daily-sales',
'0 6 * * *',
$rows,
__DIR__ . '/storage/exports/daily-sales.xlsx'
);Use PDO schedule storage for shared workers#
$scheduler = MnbExcel::pdoScheduler($pdo, 'mnb_excel_schedule');
MnbExcel::runScheduler($scheduler, [
'sleep_seconds' => 30,
'lock_name' => 'spreadsheet-scheduler',
'stop_on_signal' => true,
]);Run the process under a supervisor#
The library contains scheduling logic and a long-running runner. Use cron, systemd, Supervisor, Docker, or your hosting process manager to keep the runner alive and restart it after failure or deployment.
Was this guide useful?Use GitHub issues for corrections, missing examples, or unclear behavior.
Open an issue