Hangfire.HttpJob 邮件与钉钉通知配置教程:任务成功失败第一时间告警

📅 2026/8/19 19:15:56
Hangfire.HttpJob 邮件与钉钉通知配置教程:任务成功失败第一时间告警
Hangfire.HttpJob 邮件与钉钉通知配置教程任务成功失败第一时间告警【免费下载链接】Hangfire.HttpJobhttpjob for Hangfire,restful api for Hangfire,job调度与业务分离项目地址: https://gitcode.com/gh_mirrors/ha/Hangfire.HttpJob在分布式任务调度场景中Hangfire.HttpJob是专为 .NET 打造的 HTTP 任务调度框架它通过 restful API 让调度与业务彻底分离配合 Dashboard 可视化运维。但真正让调度系统活起来的是邮件与钉钉通知能力——当定时任务执行成功或失败时第一时间把结果推送给负责人。本文就带你从零掌握 Hangfire.HttpJob 的邮件告警与钉钉机器人通知配置方法让每个任务异常都逃不过你的眼睛。为什么任务调度必须配上告警通知定时任务跑在后台失败往往是静悄悄的数据没同步、报表没生成、接口超时……等你发现时损失已经造成。Hangfire.HttpJob 内置了双通道告警邮件通知SMTP 发送支持成功/失败双场景可带执行日志与异常堆栈钉钉通知Webhook 机器人推送Markdown 格式支持 指定人和 所有人双重触发既可全局统一配置也可为单个任务单独指定收件人告警逻辑位于 HttpJob.cs任务结束时SendSuccess与SendFail会自动触发邮件和钉钉双通道推送无需你写一行业务代码。第一步邮件通知的 SMTP 配置方法 邮件发送基于 MailKit 实现核心类是 EmailService.cs支持 SSL、超时、UTF-8 编码。你只需要在注册服务时注入 SMTP 参数。在代码中配置 SMTP 邮箱服务器在Startup.cs中给UseHangfireHttpJob传入选项对象.UseHangfireHttpJob(new HangfireHttpJobOptions { MailOption new MailOption { Server smtp.qq.com, // SMTP 服务器地址 Port 465, // 端口SSL 常用 465 User senderqq.com, // 发件邮箱 Password 授权码, // SMTP 授权码非登录密码 UseSsl true, // 开启 SSL AlertMailList new Liststring { opscompany.com } // 全局告警收件人 } })配置项全部定义在 HangfireHttpJobOptions.cs。其中AlertMailList是全局兜底收件人当任务未单独指定邮箱时告警就会发到这里。邮件通知的三个关键开关每个任务HttpJobItem见 HttpJobItem.cs都内置了三个告警字段字段作用推荐值SendSuccess成功时是否发邮件核心任务建议开SendFail失败时是否发邮件强烈建议开启Mail本任务专属收件人逗号分隔留空则用全局列表失败邮件会自动附带完整的异常类型、消息和堆栈信息BuildExceptionMsg排查问题一目了然。第二步钉钉机器人通知配置教程 钉钉通知走的是群机器人 Webhook配置同样在HangfireHttpJobOptions中先看全局配置.UseHangfireHttpJob(new HangfireHttpJobOptions { EnableDingTalk true, // 总开关必须开启 DingTalkOption new DingTalkOption { Token 你的Webhook access_token, Secret 加签密钥可选, // 开启加签安全模式时必填 AtPhones 13800000000,13900000000, // 的手机号逗号分隔 IsAtAll false // 是否 所有人 } })钉钉安全设置加签模式怎么配在钉钉群机器人设置里选加签安全方式把密钥填进Secret字段即可。框架内部会自动完成timestamp \n secret的 HMAC-SHA256 签名计算见 HttpJob.cs无需你手动拼签名参数。单任务覆盖全局钉钉配置如果某个任务要单独 不同的人可以在任务的DingTalk字段里覆盖全局设置见 HttpJobItem.cs优先级任务级配置 全局配置。第三步在 Dashboard 上快速配置告警 ✨如果你不想写代码Hangfire.HttpJob 的仪表盘直接支持可视化配置。打开任务列表页点击新增常规作业按钮在 JSON 模板里找到SendSuccess、SendFail、Mail三个字段按需修改即可若全局开启了EnableDingTalk模板会自动注入DingTalk配置块模板逻辑见 httpjob.js。新增周期性任务也是同样操作新增周期性作业弹窗里配置告警字段任务执行完成后可以回到任务详情页查看执行结果与日志确认通知是否正常触发第四步通过 Client 客户端编程式配置 使用 NuGet 包Hangfire.HttpJob.Client可以在业务代码里直接创建带告警的任务var result HangfireJobClient.AddRecurringJob(serverUrl, new RecurringJob { JobName 每日数据同步, Url http://localhost:5000/sync, Cron 0 2 * * *, SendSuccess true, // 成功也通知 SendFail true, // 失败必通知 Mail opscompany.com,ctocompany.com, // 多个收件人逗号分隔 DingTalk new DingTalkOption { Token token, AtPhones 13800000000 } });对应实现参考 RecurringJob.cs 与 BackgroundJob.csAPI 调用方式与 README 中示例一致。常见问题排查清单 ✅❓邮件没收到检查 SMTP 端口与 SSL 是否匹配、发件邮箱是否开了 SMTP 服务并填的是授权码❓钉钉没推送确认EnableDingTalk true、Token 正确群里机器人被移除后 Webhook 会失效❓只想失败告警把SendSuccess设为false、SendFail设为true即可避免成功邮件刷屏❓告警邮件乱码框架默认 UTF-8 编码若自定义了编码请统一使用Encoding.UTF8总结配置好Hangfire.HttpJob 邮件与钉钉通知后你的任务调度系统就拥有了主动说话的能力成功有记录、失败有告警、 人有保障。无论是 SMTP 邮件、钉钉群机器人还是 Dashboard 可视化配置10 分钟即可全部搞定。赶紧给你的定时任务加上这套告警体系从此告别静默失败【免费下载链接】Hangfire.HttpJobhttpjob for Hangfire,restful api for Hangfire,job调度与业务分离项目地址: https://gitcode.com/gh_mirrors/ha/Hangfire.HttpJob创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考