{
  "id": 12969751,
  "title": "Scheduled PDF and Excel report emails in ASP.NET Core with Quartz.NET",
  "url": "https://urgent.news/2026/10/08/scheduled-pdf-and-excel-report-emails-in-asp-net-core-with-quartz-net",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-08T22:35:01.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/razisyed/scheduled-pdf-and-excel-report-emails-in-aspnet-core-with-quartznet-37i0"
  },
  "original_language": "en",
  "account": "Scheduled PDF and Excel report emails in ASP.NET Core with Quartz.NET involve several complexities that teams often overlook until they run into issues in production. The process begins with scheduling, which is handled by a single Quartz.NET job that polls the system every 60 seconds to evaluate user-defined schedules. Time zones are crucial since the desired time (e.g., 8 a.m.) should be interpreted according to the user's local time zone, not the server's UTC time. Rendering output requires converting the interactive HTML report to either PDF or Excel format, which involves rendering the report through a headless browser for PDF or using EPPlus for Excel. Security becomes a concern when no user is logged in, as the job must pass the user's identity and row-level security filters to ensure the correct data is delivered in the reports. This multi-step process requires careful attention to scheduling, time zones, rendering, security, and hosting to ensure reports are sent out reliably each week.",
  "summary": "By Razi Syed. Sample code: github.com/dotnetreport/dotnetreport-scheduled-reports The moment users can build their own reports, the very next request is \"can it just email me this every Monday at 8?\" It sounds like a checkbox. It is actually five separate problems, and teams that treat it as a checkbox tend to discover them one at a time in production: Scheduling — cron expressions, and…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}