@xeplr/email
v1.0.0
Published
Internal email HTTP API — lightweight server wrapping xeplr-utils email providers
Downloads
136
Maintainers
Readme
xeplr-email
Email service with multi-provider support, optional queue, CC, and file attachments.
Setup
var email = require('xeplr-email');
email.init({
provider: 'smtp', // 'smtp', 'aws', 'azure', or 'brevo'
testTo: '[email protected]', // send test email on startup to verify health
useQueue: true, // optional: queue emails instead of sending immediately
flushIntervalInSeconds: 5, // queue flush interval (default: 5)
maxEmptyTicks: 3, // auto-pause after N empty ticks (default: 3)
smtp: {
host: 'smtp.example.com',
port: 587,
user: 'user',
pass: 'pass',
from: '[email protected]'
}
});Usage
send(to, subject, html, cc, attachments)
| Parameter | Type | Required | Description | |-------------|------------|----------|-------------| | to | string[] | yes | Recipient emails | | subject | string | yes | Email subject | | html | string | yes | HTML body | | cc | string[] | no | CC recipients | | attachments | string[] | no | File paths to attach |
Send a simple email
var email = require('xeplr-email');
email.send(['[email protected]'], 'Hello', '<p>Hi there</p>');Multiple recipients
email.send(
['[email protected]', '[email protected]'],
'Hello',
'<p>Hi there</p>'
);With CC
email.send(
['[email protected]'],
'Hello',
'<p>Hi there</p>',
['[email protected]', '[email protected]']
);With attachments
Attachments are file paths — they get picked up and attached automatically.
email.send(
['[email protected]'],
'Report',
'<p>See attached report.</p>',
[], // cc (empty)
['/tmp/report.pdf', '/tmp/data.csv'] // attachments
);With CC and attachments
email.send(
['[email protected]'],
'Report',
'<p>See attached.</p>',
['[email protected]'],
['/tmp/report.pdf']
);Via HTTP API
Start as standalone server:
var email = require('xeplr-email');
email.start({ provider: 'smtp', useQueue: true, smtp: { ... } });Then send via HTTP:
POST /internal/send
Content-Type: application/json
{
"to": ["[email protected]"],
"subject": "Hello",
"html": "<p>Hi</p>",
"cc": ["[email protected]"],
"attachments": ["/tmp/report.pdf"]
}Providers
| Provider | Config key | Required fields |
|----------|-----------|----------------|
| SMTP | smtp | host, port, user, pass, from |
| AWS SES | aws | region, accessKeyId, secretAccessKey, from |
| Azure | azure | connectionString, from |
| Brevo | brevo | apiKey, fromEmail, fromName |
Queue behavior
When useQueue: true:
- Emails are queued in memory, not sent immediately
- Queue flushes every
flushIntervalInSeconds(default: 5s) - Emails are sent one at a time, in order
- Queue auto-pauses after
maxEmptyTicksconsecutive empty flushes - Queue auto-resumes when a new email is added
When useQueue: false (default):
- Emails are sent immediately and
send()returns a promise
Health check
When testTo is configured (or EMAIL_TEST_TO env var), a test email is sent on startup. Check health with:
email.isHealthy(); // true if test email was sent successfully