Aore.Notice 1.0.0

dotnet add package Aore.Notice --version 1.0.0
                    
NuGet\Install-Package Aore.Notice -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Aore.Notice" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Aore.Notice" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Aore.Notice" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Aore.Notice --version 1.0.0
                    
#r "nuget: Aore.Notice, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Aore.Notice@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Aore.Notice&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Aore.Notice&version=1.0.0
                    
Install as a Cake Tool

Aore.Notice — .NET SDK

Static Badge license

[English Version]

📈 一个基于 .NET Standard 2.0 统一消息通知组件,包含了邮件通知、钉钉群机器人、飞书群机器人、企业微信群机器人通知,帮助我们更容易地发送程序异常通知。我将继续保持更新,并正在深度融合更多场景应用👐

使用 Aore.Notice,您可以方便快速将现有项目或新项目实现消息通知支持。

目前 Aore.Notice 支持 .NET Standard 2.0 等多种框架,同时兼容所有 MVC、Razor、WebApi、Console(命令行)、桌面应用(.exe)和后台服务等环境,和外部框架完全解耦。

希望有更多的人可以从中受益,理解并传播开源的精神,一同助力中国开源事业!感恩一路上给我们提供帮助的朋友们!

如果你喜欢并希望我们继续优化这个项目,请给我们一个 ★Star :)

✨ 功能特性

  • 多平台支持
  • 支持钉钉/飞书/企业微信群机器人 + 邮件四种通知渠道
  • 兼容 .NET Standard 2.0 及以上框架
  • 支持 MVC/WebApi/Console/桌面应用/后台服务等环境
  • 消息防刷机制
  • 通过 IntervalSeconds 参数控制消息发送频率(如 new NoticeOptions(){ IntervalSeconds = 1 })
  • @提醒功能
  • 支持通过 CommonNoticeAtUser 对象指定 @对象(如 new CommonNoticeAtUser(){IsAtAll = true, Mobile = new[]{"159XXXXXX44"}})
  • 异常消息格式化
  • 支持直接传递 Exception 对象作为消息内容(如 new Exception("custom exception"))
  • ...

🚀Aore.Notice 操作示例 :开启你的改造开发之旅!

.NET CLI:
dotnet add package Aore.Notice --version 1.0.0

或

Nuget包进行搜索下载

🛠 钉钉群机器人

new DingtalkOptions() {
  WebHook = "https://oapi.dingtalk.com/robot/send?access_token=XXXXX",
  Secret = "XXXXXX"
}

// ...
  • 支持签名校验(通过 Secret 参数)
  • 支持 @ 指定手机号用户或全体成员
  • 官方文档:钉钉群机器人
// 同步发送
_dingtalkNotice!.Send("通知标题", "同步消息");

// 异步发送
await _dingtalkNotice!.SendAsync("通知标题", new Exception("custom exception"));

// @指定用户
_dingtalkNotice!.Send("通知标题", "同步消息", new CommonNoticeAtUser() {
  IsAtAll = true, 
  Mobile = new[]{"159XXXXXX44"}
});

// ...

🔍 企业微信群机器人

new WeixinOptions() {
  WebHook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxx"
}

// ...
  • 支持通过 key 参数鉴权
  • 支持 @ 指定成员(需配置成员手机号)
  • 官方文档:企业微信群机器人
// 同步发送
_weixinProvider?.Send("通知标题", new Exception("custom exception"))!;

// 异步发送
await _weixinProvider?.SendAsync("通知标题", new Exception("custom exception"))!;

// @指定成员
_weixinProvider?.Send("通知标题", "custom exception", new CommonNoticeAtUser() {
  IsAtAll = false, 
  Mobile = new[]{"159XXXXXX44"}
});

// ...

☑️ 飞书群机器人

new FeishuOptions() {
  WebHook = "https://open.feishu.cn/open-apis/bot/v2/hook/fa76a793-ab4e-49ef-938f-xxxxxx",
  Secret = "" // 可选签名
}

// ...
// 同步发送
_feishuProvider!.Send("通知标题", "同步 Hello");

// 异步发送
await _feishuProvider!.SendAsync("通知标题", "异步 Hello");

// @全体成员
_feishuProvider!.Send("通知标题", "同步 Hello", new CommonNoticeAtUser() {
  IsAtAll = true
});

// ...

✨ 邮件通知

new EmailOptions() {
  Host = "smtp.163.com",
  Port = 465,
  FromName = "WEI.ZHOU",
  FromAddress = "xandxiao@163.com",
  Password = "xxxxxxx",
  ToAddress = new List<string>() { "xiaoandx@qq.com" }
}


// ...
  • 支持 SMTP 协议发送
  • 支持指定发件人/收件人列表
  • 支持邮件标题与内容自定义
// 异步发送异常消息
await _emailProvider!.SendAsync("Aore.Notice email Async test", new Exception("custom exception"));

// 同步发送
_emailProvider!.Send("Aore.Notice email test", new Exception("custom exception"));

// 指定收件人
_emailProvider!.Send("Aore.Notice email test", new Exception("custom exception"), 
  new CommonNoticeAtUser() { 
    UserId = new[]{"me@xiaoandx.cn"} 
  });

// ...

📚 通用功能作

  • 消息发送接口
    • 所有平台均实现 ICommonNotice 接口,提供统一的 Send/SendAsync 方法
  • 消息去重机制
    • 通过 NoticeOptions.IntervalSeconds 控制相同标题消息的发送间隔
  • 初始化方式
    • 支持两种初始化方式:
      • 通过 NoticeFactory 工厂类创建(推荐)
      • 直接实例化 XXXProvider 类
  • 异常处理
    • 返回值统一为 NoticeResponse 对象,通过 IsSuccess 属性判断发送状态
var response = _dingtalkNotice!.Send("通知标题", "同步消息");
Assert.True(response.IsSuccess);

📢 更新记录

  • Dingtalk (钉钉) 群组机器人发送消息管理器
  • Email (邮箱) 邮箱发送消息管理器
  • Feishu (飞书) 群组机器人发送消息管理器
  • Weixin (企业微信) 群组机器人发送消息管理器
  • Dingtalk (钉钉) 群组机器人采用同步发送消息管理器
  • Email (邮箱) 邮箱采用同步发送消息管理器
  • Feishu (飞书) 群组机器人采用同步发送消息管理器
  • Weixin (企业微信) 群组机器人采用同步发送消息管理器
  • 四个平台支持@用户消息提示发送

✋ 贡献代码

如果需要使用或修改此项目的源代码,建议先Fork。也欢迎将您修改的通用版本Pull Request过来。

  1. Fork
  2. 创建您的特性分支 (git checkout -b my-new-feature)
  3. 提交您的改动 (git commit -am 'Added some feature')
  4. 将您的修改记录提交到远程 git 仓库 (git push origin my-new-feature)
  5. 然后到 github 网站的该 git 远程仓库的 my-new-feature 分支下发起 Pull Request (请提交到 Developer 分支,不要直接提交到 master 分支)
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 429 7/25/2025

一个基于 .NET Standard 2.0 统一消息通知组件,包含了邮件通知、钉钉群机器人、飞书群机器人、企业微信群机器人通知,帮助我们更容易地发送程序异常通知