{"_id":"@apimailer/sdk","_rev":"2-dcb80fcbc0d75cbb1e38a10eacde299e","name":"@apimailer/sdk","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@apimailer/sdk","version":"0.1.0","keywords":["apimailer","email","mail","transactional-email","typescript"],"license":"MIT","_id":"@apimailer/sdk@0.1.0","maintainers":[{"name":"felixxxiu","email":"xu.duqing@gmail.com"}],"dist":{"shasum":"bfae0299b88894bcc516b31fc252e60cd81d1619","tarball":"https://registry.npmjs.org/@apimailer/sdk/-/sdk-0.1.0.tgz","fileCount":10,"integrity":"sha512-jnX778acliQmrGkDQbstPbSo3QHpuhJSsiZ4vFjLmSkFCoPkOd3EUazB6dJefFS/9mYnVnQKHo7rLEcaaHn71g==","signatures":[{"sig":"MEUCIQDIMa8aABwWwlCvarN7OuAvIcWaxYyPpigfqNl5Cq0wrgIgeOoOracsKti19MoRDfYf9fcw97foNmfM7h5UzxoqKew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53968},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"5a667f216b0655a4fa877c71dd916a62e8d16ef5","scripts":{"test":"npm run build && node --test test/client.test.mjs","build":"tsup src/index.ts --format esm,cjs --dts --clean --sourcemap","typecheck":"tsc --noEmit && tsc --noEmit --module Node16 --moduleResolution Node16 test/commonjs.typecheck.cts","prepublishOnly":"npm test && npm run typecheck"},"_npmUser":{"name":"felixxxiu","email":"xu.duqing@gmail.com"},"_npmVersion":"10.9.3","description":"Official TypeScript and JavaScript SDK for sending email with APIMailer.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1787817200556_0.2989316002224851","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@apimailer/sdk","version":"0.1.1","description":"Official TypeScript and JavaScript SDK for sending email with APIMailer.","repository":{"type":"git","url":"git+https://github.com/xu-duqing/apimailer.git"},"keywords":["apimailer","email","mail","transactional-email","typescript"],"license":"MIT","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"sideEffects":false,"engines":{"node":">=18"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean --sourcemap","test":"npm run build && node --test test/client.test.mjs","typecheck":"tsc --noEmit && tsc --noEmit --module Node16 --moduleResolution Node16 test/commonjs.typecheck.cts","prepublishOnly":"npm test && npm run typecheck"},"devDependencies":{"tsup":"^8.5.0","typescript":"^5.9.2"},"_id":"@apimailer/sdk@0.1.1","gitHead":"b0066db587e0951881c77be6aff50bba469e36d2","bugs":{"url":"https://github.com/xu-duqing/apimailer/issues"},"homepage":"https://github.com/xu-duqing/apimailer#readme","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-MLta1Wtk2laZ7c9jjuOKEYIjXgxIWB0VN0nscwu/THMI4iJ9gG7AS0F3OuZkmyOwGzIeOS341tvLEDfKXNAbYQ==","shasum":"0768163aaafa4eb5f8afd75d5008dd9253fc5649","tarball":"https://registry.npmjs.org/@apimailer/sdk/-/sdk-0.1.1.tgz","fileCount":10,"unpackedSize":54134,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCONjXzEPwBfvKAkYLLdGVuDP+ZFvq0L4qM5gteVL/2cgIgUHL9yJ8zaOApcFmRfFcnySuTt42j8IeGUo4qlUd7r1Q="}]},"_npmUser":{"name":"felixxxiu","email":"xu.duqing@gmail.com"},"directories":{},"maintainers":[{"name":"felixxxiu","email":"xu.duqing@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.1.1_1788332152127_0.660709780575508"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-27T07:53:20.302Z","modified":"2026-09-02T06:55:52.520Z","0.1.0":"2026-08-27T07:53:20.695Z","0.1.1":"2026-09-02T06:55:52.264Z"},"license":"MIT","keywords":["apimailer","email","mail","transactional-email","typescript"],"description":"Official TypeScript and JavaScript SDK for sending email with APIMailer.","maintainers":[{"name":"felixxxiu","email":"xu.duqing@gmail.com"}],"readme":"# APIMailer Node.js SDK\n\n[English](README.md) | [简体中文](README.zh-CN.md)\n\n官网：https://apimailer.cc/\n\n使用 JavaScript 或 TypeScript 调用 [APIMailer](https://apimailer.cc) 发送邮件。SDK 无运行时依赖，支持 Node.js 18 及以上版本，并同时提供 ESM、CommonJS 和完整类型声明。\n\n## 安装\n\n```bash\nnpm install @apimailer/sdk\n```\n\n## 快速开始\n\n请将 API Key 放在服务端环境变量中，不要提交到代码仓库或暴露给浏览器。\n\n```bash\nexport APIMAILER_API_KEY=\"mw_live_your_api_key\"\n```\n\n```ts\nimport { APIMailer } from \"@apimailer/sdk\";\n\nconst mailer = new APIMailer({\n  apiKey: process.env.APIMAILER_API_KEY!,\n});\n\nconst result = await mailer.send({\n  to: \"user@example.com\",\n  subject: \"Test Mail from APIMailer\",\n  body: \"<p>This is a test email sent via APIMailer.</p>\",\n});\n\nconsole.log(result);\n```\n\nCommonJS 项目可以这样使用：\n\n```js\nconst { APIMailer } = require(\"@apimailer/sdk\");\n\nconst mailer = new APIMailer({\n  apiKey: process.env.APIMAILER_API_KEY,\n});\n```\n\n## 配置\n\n```ts\nconst mailer = new APIMailer({\n  apiKey: process.env.APIMAILER_API_KEY!,\n  timeout: 15_000, // 默认 10 秒，设为 0 可禁用超时\n  // baseUrl: \"https://apimailer.cc\", // 使用代理或测试服务时可覆盖\n});\n```\n\n单次请求也可以覆盖超时或通过 `AbortSignal` 主动取消：\n\n```ts\nconst controller = new AbortController();\n\nawait mailer.send(\n  {\n    to: \"user@example.com\",\n    subject: \"Hello\",\n    body: \"<p>Hello from APIMailer.</p>\",\n  },\n  {\n    timeout: 5_000,\n    signal: controller.signal,\n  },\n);\n```\n\n## 错误处理\n\n网络错误、超时、请求取消以及非 2xx API 响应都会抛出 `APIMailerError`。HTTP 错误还包含状态码、服务端响应和可选的请求 ID。\n\n```ts\nimport { APIMailerError } from \"@apimailer/sdk\";\n\ntry {\n  await mailer.send({\n    to: \"user@example.com\",\n    subject: \"Hello\",\n    body: \"<p>Hello.</p>\",\n  });\n} catch (error) {\n  if (error instanceof APIMailerError) {\n    console.error(error.code, error.status, error.requestId);\n    console.error(error.response);\n  }\n  throw error;\n}\n```\n\n常见 SDK 错误码：\n\n- `HTTP_ERROR`：API 返回了非 2xx 状态（如果 API 返回自己的 `code`，将优先使用它）\n- `NETWORK_ERROR`：无法连接 API\n- `TIMEOUT`：请求超过配置的超时时间\n- `ABORTED`：调用方取消了请求\n\n## API\n\n### `new APIMailer(options)`\n\n- `apiKey`：必填，APIMailer API Key\n- `baseUrl`：可选，默认 `https://apimailer.cc`\n- `timeout`：可选，默认 `10000` 毫秒；设为 `0` 禁用\n- `fetch`：可选，自定义 fetch-compatible 实现\n\n### `mailer.send(email, options?)`\n\n`email` 包含三个必填字符串字段：`to`、`subject`、`body`。`body` 可以是 HTML。\n\n### `createClient(options)`\n\n`new APIMailer(options)` 的便捷工厂函数。\n\n## 开发\n\n```bash\nnpm install\nnpm test\nnpm run typecheck\nnpm pack --dry-run\n```\n\n## License\n\nMIT\n","readmeFilename":"README.zh-CN.md","homepage":"https://github.com/xu-duqing/apimailer#readme","repository":{"type":"git","url":"git+https://github.com/xu-duqing/apimailer.git"},"bugs":{"url":"https://github.com/xu-duqing/apimailer/issues"}}