关于 extension-email
用于从后端 canister 发送服务类和事务性邮件的 Caffeine AI Skill。它向每位收件人单独发送邮件,并以成功或错误结果报告发送状态,不会因失败抛出异常。
主要功能
- 01发送服务类和事务性邮件
- 02向每位收件人单独发送邮件
- 03返回明确的成功或错误结果
适用场景
- 01发送订单确认邮件
- 02发送一次性通知
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ caffeinelabs/ skills --skill extension-email安装后在 Claude Code 中输入/extension-email确认已加载。
详细介绍
电子邮件 — 服务/事务性
适用于 Caffeine AI 的服务/事务性电子邮件扩展。
概述
此技能支持从后端 canister 发送服务和事务性电子邮件。使用 sendServiceEmail 发送订单确认、通知及类似的一次性电子邮件。
后端
此组件用于发送服务/事务性电子邮件。
这里提供了预制模块 mo:caffeineai-email/emailClient.mo,该模块不可修改。
- 使用 sendServiceEmail 函数。
- 每位收件人都会收到一封单独的电子邮件。
- 它会返回一个 SendResult;如果电子邮件发送成功,则结果为 #ok,否则为 #err(error),其中包含错误文本。
- 发送失败时绝不会抛出异常。所有失败(包括网关错误)都会以
#err返回。
module {
public type SendResult = {
#ok;
#err : Text;
};
public func sendServiceEmail(
fromUsername : Text,
recipients : [Text],
subject : Text,
htmlBody : Text,
) : async SendResult;
};
sendServiceEmail 的用法:
import Runtime "mo:core/Runtime";
import EmailClient "mo:caffeineai-email/emailClient";
actor {
public func sendOrderConfirmationEmail(recipientEmailAddress : Text, username : Text, orderReference : Text) : async () {
let result = await EmailClient.sendServiceEmail(
"no-reply",
[recipientEmailAddress],
"Order " # orderReference # " confirmed",
"Hello " # username # ",\nYour order " # orderReference # " has been confirmed. Your items will ship tomorrow.",
);
switch (result) {
case (#ok) {};
case (#err(error)) {
Runtime.trap("Failed to send order confirmation email: " # error);
};
};
};
};
从先前版本升级
使用 caffeineai-email 0.3.x 构建的应用可通过 mops add [email protected] 重新固定依赖。sendServiceEmail 和 sendRawEmail 的签名保持不变。现在,每次发送都会通过邮件网关进行,并使用平台在每次部署时注入的设置(INTEGRATIONS_GATEWAY_URL / INTEGRATIONS_GATEWAY_API_KEY);不再使用传输 canister 和 INTEGRATIONS_CANISTER_ID,如果缺少这些设置,发送会返回 #err,而不会回退到其他方式。使用验证、营销或日历电子邮件的应用,请参阅相应技能中的升级说明。
使用 caffeineai-email 0.2.x 构建的应用可通过 mops add [email protected] 重新固定依赖。sendServiceEmail 和 sendRawEmail 的签名保持不变;现在每次发送都会携带幂等键,因此重试的外部调用只会发送并计费一次。使用验证或营销电子邮件的应用,请参阅相应技能中的升级说明。