讲师中心 微信公众号

工具推荐

视频效率加速
Laper
Laper

剧本策划到成片协作

立刻MV
立刻MV

低成本歌曲 MV、视频生成

AniShort
AniShort

AI短剧协同制作平台

剧云
剧云

中文短剧剧本制作平台

Lumail

Polar Sponsor
爱发电 赞助
.NET 9.0

通过CLI和TypeScript SDK管理Lumail邮件营销平台;用于邮件营销、订阅者管理及营销活动创建。

Lumail - 电子邮件营销 CLI & SDK. 与 Lumail API 的交互,使用 CLI (pnpm lumail) 或 TypeScript SD

功能概述

Lumail - 电子邮件营销 CLI & SDK. 与 Lumail API 的交互,使用 CLI (pnpm lumail) 或 TypeScript SD是一项面向实际任务的技能,主要用于QQQ 快速启动.;CLI Referenceen。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Lumail — 电子邮件营销命令行工具(CLI)与软件开发套件(SDK)

可通过命令行工具(pnpm lumail)或 TypeScript SDK(import { Lumail } from "@/lib/lumail-sdk")与 Lumail API 进行交互。

快速开始

# 首先设置您的 API 密钥
pnpm lumail auth set 

# 验证是否配置成功
pnpm lumail auth test

CLI 参考文档

所有 CLI 命令均通过 pnpm lumail 执行。每个命令均支持全局标志(Global Flags)。

全局标志

标志 说明
--json 以 JSON 格式输出
--format 输出格式(默认为 text)
--verbose 启用调试日志
--no-color 禁用彩色输出
--no-header 省略表格标题(适用于管道操作)

身份验证

pnpm lumail auth set        # 保存 API 密钥(路径:~/.config/lumail/token)
pnpm lumail auth show              # 显示脱敏后的密钥
pnpm lumail auth show --raw        # 显示完整密钥
pnpm lumail auth remove            # 删除已保存的密钥
pnpm lumail auth test              # 验证密钥有效性

订阅者(Subscribers)

# 创建或更新(upsert)订阅者
pnpm lumail subscribers create --email user@example.com --name "John" --tags vip beta

# 通过邮箱或 ID 获取订阅者
pnpm lumail subscribers get user@example.com

# 更新订阅者
pnpm lumail subscribers update user@example.com --name "John Doe"
pnpm lumail subscribers update user@example.com --tags premium --replace-tags

# 删除订阅者
pnpm lumail subscribers delete user@example.com

# 退订(Unsubscribe)
pnpm lumail subscribers unsubscribe user@example.com

# 管理标签(Tags)
pnpm lumail subscribers add-tags user@example.com --tags vip premium
pnpm lumail subscribers remove-tags user@example.com --tags old-tag

# 列出事件(Events)
pnpm lumail subscribers events user@example.com --take 50 --order desc

营销活动(Campaigns)

# 列出营销活动
pnpm lumail campaigns list
pnpm lumail campaigns list --status DRAFT --page 1 --limit 50
pnpm lumail campaigns list --query "welcome" --json

# 创建营销活动
pnpm lumail campaigns create --subject "Welcome!" --name "Welcome Campaign"

# 获取营销活动详情
pnpm lumail campaigns get 

# 更新营销活动(仅限 DRAFT 状态)
pnpm lumail campaigns update  --subject "Updated Subject" --preview "Preview text"

# 删除营销活动(仅限 DRAFT 状态)
pnpm lumail campaigns delete 

# 立即发送
pnpm lumail campaigns send 

# 定时发送
pnpm lumail campaigns send  --scheduled-at 2025-12-25T10:00:00Z --timezone UTC

标签(Tags)

pnpm lumail tags list
pnpm lumail tags create --name "premium"
pnpm lumail tags get premium          # 支持按名称或 ID 查询
pnpm lumail tags update  --name "gold"

邮件(Transactional Emails)

# 发送事务性邮件
pnpm lumail emails send 
  --to user@example.com 
  --from noreply@yourdomain.com 
  --subject "Order Confirmation" 
  --content "Your order #123 is confirmed." 
  --content-type MARKDOWN

# 禁用追踪功能
pnpm lumail emails send --to x --from y --subject z --content "Hello" --transactional

# 验证邮箱地址
pnpm lumail emails verify user@example.com

事件(Events)

pnpm lumail events create 
  --type SUBSCRIBER_PAYMENT 
  --subscriber user@example.com 
  --data '{"amount": 99, "plan": "pro"}'

支持的事件类型:SUBSCRIBED、UNSUBSCRIBED、TAG_ADDED、TAG_REMOVED、EMAIL_OPENED、EMAIL_CLICKED、EMAIL_SENT、EMAIL_RECEIVED、WORKFLOW_STARTED、WORKFLOW_COMPLETED、WORKFLOW_CANCELED、FIELD_UPDATED、EMAIL_BOUNCED、EMAIL_COMPLAINED、WEBHOOK_EXECUTED、SUBSCRIBER_PAYMENT、SUBSCRIBER_REFUND

工具(Tools,V2 API)

V2 工具 API 提供了 59+ 个面向 AI Agent 和高级操作的工具。

# 列出所有可用工具
pnpm lumail tools list

# 获取工具 Schema
pnpm lumail tools get list_subscribers

# 执行工具
pnpm lumail tools run list_subscribers --params '{"limit": 10, "status": "SUBSCRIBED"}'
pnpm lumail tools run create_campaign --params '{"name": "Test", "subject": "Hello"}'
pnpm lumail tools run send_campaign --params '{"campaignId": "abc123"}'

SDK 参考文档

SDK 源码位于 src/lib/lumail-sdk/,可通过 @/lib/lumail-sdk 导入使用。

初始化配置

import { Lumail } from "@/lib/lumail-sdk";

const lumail = new Lumail({
  apiKey: "lm_...",
  baseUrl: "https://lumail.io/api", // 可选,默认为此值
});

订阅者(Subscribers)

// 创建或更新(upsert)
const { subscriber } = await lumail.subscribers.create({
  email: "user@example.com",
  name: "John",
  tags: ["vip", "beta"],
  fields: { company: "Acme" },
  triggerWorkflows: true,
});

// 通过邮箱或 ID 获取
const { subscriber } = await lumail.subscribers.get("user@example.com");

// 更新
await lumail.subscribers.update("user@example.com", { name: "John Doe" });

// 删除
await lumail.subscribers.delete("user@example.com");

// 退订(Unsubscribe)
await lumail.subscribers.unsubscribe("user@example.com");

// 标签管理
await lumail.subscribers.addTags("user@example.com", ["premium"]);
await lumail.subscribers.removeTags("user@example.com", ["old-tag"]);

// 事件列表(基于游标分页)
const { events, nextCursor } = await lumail.subscribers.listEvents("user@example.com", {
  take: 20,
  order: "desc",
  eventTypes: ["EMAIL_OPENED", "EMAIL_CLICKED"],
});

营销活动(Campaigns)

// 分页列出
const { campaigns, total, pageCount } = await lumail.campaigns.list({
  status: "DRAFT",
  page: 1,
  limit: 20,
  query: "welcome",
});

// 创建
const { campaign, campaignId } = await lumail.campaigns.create({
  subject: "Welcome!",
  name: "Welcome Campaign",
  contentType: "MARKDOWN",
});

// 获取详情
const { campaign } = await lumail.campaigns.get(campaignId);

// 更新(仅限 DRAFT 状态)
await lumail.campaigns.update(campaignId, { subject: "Updated Subject" });

// 删除(仅限 DRAFT 状态)
await lumail.campaigns.delete(campaignId);

// 立即发送
await lumail.campaigns.send(campaignId);

// 定时发送
await lumail.campaigns.send(campaignId, {
  scheduledAt: "2025-12-25T10:00:00Z",
  timezone: "UTC",
});

邮件(Transactional Emails)

const { qstashMessageId } = await lumail.emails.send({
  to: "user@example.com",
  from: "noreply@yourdomain.com",
  subject: "Order Confirmation",
  content: "Your order is confirmed.",
  contentType: "MARKDOWN", // "MARKDOWN" | "HTML" | "TIPTAP"
  tracking: { links: true, open: true },
});

// 验证邮箱
const { isValid } = await lumail.emails.verify({ email: "test@example.com" });

标签(Tags)

const { tags } = await lumail.tags.list();
const { tag } = await lumail.tags.create({ name: "premium" });
const { tag } = await lumail.tags.get("premium"); // 支持按名称或 ID 查询
await lumail.tags.update("premium", { name: "gold" });

事件(Events)

await lumail.events.create({
  eventType: "SUBSCRIBER_PAYMENT",
  subscriber: "user@example.com",
  data: { amount: 99, plan: "pro" },
});

工具(Tools,V2 API)

// 列出所有工具
const { tools, grouped } = await lumail.tools.list();

// 获取工具 Schema
const { tool } = await lumail.tools.get("list_subscribers");

// 执行工具并指定响应类型
const result = await lumail.tools.run<{ subscribers: unknown[] }>(
  "list_subscribers",
  { limit: 10 },
);

错误处理

SDK 抛出强类型的错误对象,可捕获特定错误类型:

import {
  Lumail,
  LumailAuthenticationError,
  LumailNotFoundError,
  LumailRateLimitError,
  LumailValidationError,
  LumailPaymentRequiredError,
} from "@/lib/lumail-sdk";

try {
  await lumail.subscribers.get("unknown@example.com");
} catch (error) {
  if (error instanceof LumailNotFoundError) {
    // 404 - 订阅者未找到
  } else if (error instanceof LumailAuthenticationError) {
    // 401 - API 密钥无效
  } else if (error instanceof LumailRateLimitError) {
    // 429 - 请求频率超限,error.retryAfter 提供毫秒级重试延迟
  } else if (error instanceof LumailPaymentRequiredError) {
    // 402 - 达到套餐用量上限
  } else if (error instanceof LumailValidationError) {
    // 400 - 请求参数校验失败
  }
}

重试策略

  • GET / PUT / DELETE 请求在遇到网络错误或 429 响应时最多重试 3 次
  • POST / PATCH 请求不自动重试(防止重复创建订阅者或邮件)
  • 重试延迟:1 秒、2 秒、4 秒(指数退避)
  • 尊重服务端返回的 Retry-After 响应头
  • 单次请求默认超时时间为 30 秒

npm 包

发布于 npm,包名为 lumail,同时提供 CLI 和库两种使用方式:

# CLI 使用方式(需先执行:npm install -g lumail)
npx lumail auth set 
npx lumail subscribers create --email user@example.com

# 库使用方式
import { Lumail } from "lumail";
const lumail = new Lumail({ apiKey: "lm_..." });

包源码路径:packages/lumail/
构建命令:bun run build(在 packages/lumail/ 目录下执行)
自动发布:向 main 分支推送代码将触发 GitHub Actions 自动发布流程

文件路径说明

组件 路径
SDK 源码 src/lib/lumail-sdk/
CLI 源码 src/cli/
npm 包 packages/lumail/
构建脚本 packages/lumail/build.ts
测试用例 __tests__/lumail-sdk.test.ts、__tests__/lumail-cli.test.ts
API 文档 content/docs/api-reference/
GitHub Action 配置 .github/workflows/release-lumail.yml
目录

热门AI工具

更多
音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

0

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

0

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

0

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

0

2026.11.05

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

0

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn