如何在Node.js中通过Klaviyo向指定邮箱发送邮件?
在Node.js中使用Klaviyo发送邮件的方案
核心结论
完全可以在Node.js应用中通过Klaviyo的API或官方SDK向特定邮箱发送邮件,主要有两种常用实现方式:使用官方Node.js SDK,或者直接调用REST API。
一、使用Klaviyo官方Node.js SDK
1. 安装SDK
执行以下命令安装官方SDK:
npm install @klaviyo/client # 或使用yarn yarn add @klaviyo/client
2. 初始化客户端
需要从Klaviyo后台获取私有API密钥(具备邮件发送权限),并指定你的账户区域(US或EU):
const { KlaviyoAPI } = require('@klaviyo/client'); const klaviyo = new KlaviyoAPI({ apiKey: 'YOUR_KLAVIYO_PRIVATE_API_KEY', region: 'US' // 若账户在欧洲区则填'EU' });
3. 发送邮件的两种场景
场景1:触发预定义自动化流(Flow)
如果你在Klaviyo后台创建了触发式流(比如用户订阅后发送欢迎邮件),可通过API触发该流定向发送给目标邮箱:
async function triggerFlow(targetEmail) { try { const response = await klaviyo.Flow.triggerFlow({ flowId: 'YOUR_FLOW_ID', // 从Klaviyo后台流设置中复制ID profiles: [ { email: targetEmail } ] }); console.log('邮件流触发成功:', response); } catch (err) { console.error('触发失败:', err); } } // 调用示例 triggerFlow('user@example.com');
场景2:发送交易类邮件
针对订单确认、密码重置这类一次性交易邮件,使用交易邮件API:
async function sendTransactionalEmail(targetEmail) { try { const response = await klaviyo.Transactional.sendTransactionalEmail({ templateId: 'YOUR_TRANSACTIONAL_TEMPLATE_ID', // 后台创建的交易邮件模板ID fromEmail: 'verified-sender@yourdomain.com', // 已通过Klaviyo验证的发件邮箱 subject: '你的订单已确认', to: [{ email: targetEmail }], // 模板动态变量(匹配模板中的占位符) dynamicTemplateData: { orderNumber: 'ORD-78901', userName: 'Jane Smith' } }); console.log('交易邮件发送成功:', response); } catch (err) { console.error('发送失败:', err); } } // 调用示例 sendTransactionalEmail('user@example.com');
二、直接调用Klaviyo REST API
如果不想依赖SDK,可使用axios或fetch直接调用API:
1. 触发自动化流示例(用axios)
const axios = require('axios'); async function triggerFlowViaAPI(targetEmail) { try { const res = await axios.post( 'https://a.klaviyo.com/api/flows/YOUR_FLOW_ID/trigger/', { profiles: [{ email: targetEmail }] }, { headers: { 'Authorization': 'Klaviyo-API-Key YOUR_PRIVATE_API_KEY', 'Content-Type': 'application/json', 'revision': '2024-02-15' // 使用Klaviyo最新API版本 } } ); console.log('触发成功:', res.data); } catch (err) { console.error('触发失败:', err.response.data); } }
2. 发送交易邮件示例
async function sendTransactionalEmailViaAPI(targetEmail) { try { const res = await axios.post( 'https://a.klaviyo.com/api/transactional-emails/', { template_id: 'YOUR_TRANSACTIONAL_TEMPLATE_ID', from_email: 'verified-sender@yourdomain.com', subject: '密码重置通知', to: [{ email: targetEmail }], dynamic_template_data: { resetLink: 'https://yourdomain.com/reset' } }, { headers: { 'Authorization': 'Klaviyo-API-Key YOUR_PRIVATE_API_KEY', 'Content-Type': 'application/json', 'revision': '2024-02-15' } } ); console.log('发送成功:', res.data); } catch (err) { console.error('发送失败:', err.response.data); } }
三、关键API参考要点
- 触发流API:依赖后台预定义的流,需提供
flow_id,仅支持私有API密钥调用。 - 交易邮件API:需提前在后台创建并验证交易邮件模板,发件邮箱必须经过Klaviyo域名验证。
- API版本:所有请求需指定最新的API版本号(可在Klaviyo开发者文档中查询),避免兼容性问题。
- 权限要求:必须使用私有API密钥,公钥仅用于前端事件追踪等非敏感操作,无邮件发送权限。
注意事项
- 确保账户已开通邮件发送权限,且发件域名/邮箱完成Klaviyo验证。
- 发送营销类邮件时,需确保目标用户已完成合规订阅(符合GDPR、CAN-SPAM等法规)。
- 测试阶段建议使用Klaviyo的测试模式,避免向真实用户发送测试邮件。
内容的提问来源于stack exchange,提问作者Rohan Ghosh
相关产品推荐
相关产品推荐

