@mspkapps/email-client
v0.2.2
Published
Enterprise client SDK for MSPK Email Service with HMAC-SHA256 request signing, named SMTP profile selection, and email threading
Maintainers
Readme
@mspkapps/email-client
Enterprise client SDK for MSPK Email Service with HMAC-SHA256 request signing, automatic support threading, and reference tracking.
Features
- 🔐 High Security: Request signing via HMAC-SHA256. Secret keys are never transmitted over HTTP.
- 🏷️ Reference IDs: Every sent email receives a unique ID (e.g.
EM-A3X9K2) auto-appended to headers and branded support footers. - 🧵 Support & Threading: Group emails into conversation threads using
threadIdandparentRefId. - 📊 History Queries: Directly retrieve conversation histories and audit logs.
- ⚡ Zero Dependencies: Lightweight ESM module compatible with Node.js 18+, Bun, Deno, and modern runtimes.
Installation
npm install @mspkapps/email-clientQuickstart
1. Configure Environment Variables
Set the credentials obtained from the MSPK Apps Admin Panel:
MSPK_EMAIL_KEY_ID=esk_xxxxxxxxxxxxxxxx
MSPK_EMAIL_KEY_SECRET=esks_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
MSPK_EMAIL_API_URL=https://admin-api.mspkapps.in2. Send an Email
import emailclient from '@mspkapps/email-client';
// Initializes automatically from process.env (or pass explicitly)
emailclient.init();
const response = await emailclient.send({
to: ['[email protected]'],
subject: 'Welcome to MSPK Apps!',
html: '<h1>Hello!</h1><p>Thank you for creating an account with us.</p>',
fromName: 'MSPK Apps Team' // Optional
});
console.log('Sent Email Reference ID:', response.refId);
console.log('Conversation Thread ID:', response.threadId);Threading & Customer Support Replies
Create structured reply threads for tickets, order updates, or support conversations:
// Step 1: Send initial email
const initialEmail = await emailclient.send({
to: ['[email protected]'],
subject: 'Order #1042 Confirmed',
html: '<p>Your order has been placed.</p>',
metadata: { orderId: 1042 }
});
// Step 2: Send reply in the same thread
const replyEmail = await emailclient.send({
to: ['[email protected]'],
subject: 'Re: Order #1042 Confirmed',
html: '<p>Your order has shipped!</p>',
parentRefId: initialEmail.refId // Automatically links to the parent thread
});
// Step 3: Fetch the full conversation thread
const thread = await emailclient.getThread(replyEmail.threadId);
console.log(`Thread contains ${thread.count} messages:`, thread.data);Querying History
// Query past messages sent by this product
const history = await emailclient.getHistory({
page: 1,
limit: 20,
to: '[email protected]'
});
// Fetch details for a specific email
const message = await emailclient.getEmail('EM-A3X9K2');License
MIT © MSPK Apps
