# @basenative/notify 中文文档

规范地址：https://npmcn.com/package/%40basenative/notify/

版本：3\.0\.0
npm 元数据更新时间：2026-10-31T13:47:37.004Z
中文译文更新时间：2026-10-31T16:12:03.942Z
软件包许可：Apache-2\.0

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40basenative/notify
原文对照：https://npmcn.com/package/%40basenative/notify/?lang=original
项目主页：https://github.com/DuganLabs/BaseNative/tree/main/packages/notify#readme
源码仓库：https://github.com/DuganLabs/BaseNative

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：26.1 kB，10 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-03-20T05:27:52.546Z
- 最新版本发布：2026-10-31T13:47:36.580Z
- 已发布版本数：11（近 12 个月 11 个）

## 中文简介

电子邮件通知通过SMTP和SendGrid与模板呈现

## 安装

```sh
npm install @basenative/notify
```

也可以使用：`pnpm add @basenative/notify`、`yarn add @basenative/notify`、`bun add @basenative/notify`

## README

# @ basenative/notify

> 使用HTML模板、应用内通知和SMTP/SendGrid/Resend传输发送电子邮件

部分 [BaseNative](https://github.com/DuganLabs/basenative) 生态系统——基于信号的web运行时，基于原生HTML。

## 安装

```bash
npm install @basenative/notify
```

## 快速入门

```js
import {
  renderEmail,
  createEmailSender,
  createSmtpTransport,
} from '@basenative/notify';

const transport = createSmtpTransport({
  host: 'smtp.example.com',
  port: 587,
  auth: { user: 'user@example.com', pass: process.env.SMTP_PASS },
});

const sender = createEmailSender(transport);

const template = `
  <h1>Hello, {{ name }}!</h1>
  <p>Your account has been created. <a href="{{ link }}">Get started</a></p>
`;

const { html, text } = renderEmail(template, {
  name: 'Alice',
  link: 'https://example.com/onboarding',
});

await sender.send({
  from: 'noreply@example.com',
  to: 'alice@example.com',
  subject: 'Welcome!',
  html,
  text,
});
```

## 应用内通知

```js
import { createNotificationCenter } from '@basenative/notify';

const notifications = createNotificationCenter();

notifications.add({ type: 'info', message: 'Your report is ready.' });
notifications.add({ type: 'error', message: 'Payment failed.', persistent: true });

// Read all active notifications
const all = notifications.getAll();
notifications.dismiss(all[0].id);
```

## API

### 电子邮件

-   `renderEmail(template, data)` -插值 `{{ variable }}` HTML模板中的占位符。返回 `{ html, text }` 哪里 `text` 是源自HTML的纯文本版本。
-   `createEmailSender(transport)` -创建绑定到传输的发件人。返回 `{ send(options) }` 选项在哪里？ `{ to, from, subject, html, text? }`.

#### 逃脱

每一个 `{{ variable }}` value默认为html转义，使用相同的 `escapeAttr` 助手 `@basenative/server` SSR模板的使用 （`@basenative/runtime/shared/escape`）。一个包含 `<script>` 或者 其他标记呈现为惰性文本，而不是可执行的HTML:

```js
renderEmail('<p>Hi {{ name }}</p>', { name: '<script>alert(1)</script>' });
// => { html: '<p>Hi &lt;script&gt;alert(1)&lt;/script&gt;</p>', ... }
```

要插入受信任的HTML而不转义，请将值包装在 `raw()`：

```js
import { raw } from '@basenative/runtime/shared/escape';

renderEmail('<div>{{ body }}</div>', { body: raw('<strong>Bold</strong>') });
// => { html: '<div><strong>Bold</strong></div>', ... }
```

仅通过 `raw()` 在你信任的HTML周围——它完全禁止转义 该值，在占位符出现的每个位置(`{{ }}` 插值 这里不知道它是落在文本节点还是属性值中，所以 选择退出逃避选择退出两者)。

### 传输

-   `createSmtpTransport(options)` —通过SMTP协议发送邮件。选项: `host`， `port`， `secure`， `auth: { user, pass }`.
-   `createSendGridTransport(options)` -通过SendGrid API发送电子邮件。选项: `apiKey`.
-   `createResendTransport(options)` -通过Resend API发送电子邮件。选项： `apiKey`.

### 应用内通知

-   `createNotificationCenter()` -创建应用内通知商店。
    -   `.add(notification)` —添加通知。字段: `type` （`'info'`， `'warn'`， `'error'`， `'success'`)， `message`， `persistent?`， `metadata?`。返回创建的通知，其中包含自动生成的 `id`.
    -   `.dismiss(id)` -按ID删除通知。
    -   `.getAll()` -返回所有活动通知。
    -   `.clear()` -删除所有通知。

## 许可证

apache - 2.0

## 常见问题

### @basenative/notify 是什么？

电子邮件通知通过SMTP和SendGrid与模板呈现

### 如何安装 @basenative/notify？

在项目目录运行 npm install @basenative/notify，或使用 pnpm add / yarn add / bun add。

### @basenative/notify 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @basenative/notify 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @basenative/notify 可以商用吗？

@basenative/notify 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @basenative/notify 还在维护吗？

最新版本 3\.0\.0 发布于 2026/10/31（2 天前）；至今共发布 11 个版本，其中过去 12 个月发布了 11 个；首次发布于 2026/03/20。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

