Node.js SDK
Official Node.js SDK for the ToSend email API.
- Package:
tosend - Requirements: Node.js 18+
- Repository: tosend/tosend-node
Installation
bash
npm install tosendQuick Start
typescript
import { ToSend } from 'tosend';
const tosend = new ToSend('tsend_your_api_key');
const response = await tosend.send({
from: { email: 'hello@yourdomain.com', name: 'Your App' },
to: [{ email: 'user@example.com' }],
subject: 'Welcome!',
html: '<h1>Hello!</h1><p>Thanks for signing up.</p>',
});
console.log(response.message_id);Configuration
Simple (API key only)
typescript
const tosend = new ToSend('tsend_your_api_key');With Options
typescript
const tosend = new ToSend({
apiKey: 'tsend_your_api_key',
baseUrl: 'https://api.tosend.com', // optional
timeout: 30000, // optional, in milliseconds
});Send Email
Basic Email
typescript
const response = await tosend.send({
from: { email: 'hello@yourdomain.com', name: 'Your App' },
to: [
{ email: 'user@example.com' },
{ email: 'another@example.com', name: 'John Doe' },
],
subject: 'Hello!',
html: '<h1>Welcome</h1>',
text: 'Welcome', // optional
});With CC, BCC, and Reply-To
typescript
const response = await tosend.send({
from: { email: 'hello@yourdomain.com' },
to: [{ email: 'user@example.com' }],
cc: [{ email: 'cc@example.com' }],
bcc: [{ email: 'bcc@example.com' }],
reply_to: { email: 'support@yourdomain.com', name: 'Support' },
subject: 'Hello',
html: '<p>Hello World</p>',
});With Attachments
typescript
import * as fs from 'fs';
const response = await tosend.send({
from: { email: 'hello@yourdomain.com' },
to: [{ email: 'user@example.com' }],
subject: 'Your Invoice',
html: '<p>Please find your invoice attached.</p>',
attachments: [
{
type: 'application/pdf',
name: 'invoice.pdf',
content: fs.readFileSync('invoice.pdf').toString('base64'),
},
],
});Batch Sending
Send multiple emails in a single request:
typescript
const response = await tosend.batch([
{
from: { email: 'hello@yourdomain.com' },
to: [{ email: 'user1@example.com' }],
subject: 'Hello User 1',
html: '<p>Welcome!</p>',
},
{
from: { email: 'hello@yourdomain.com' },
to: [{ email: 'user2@example.com' }],
subject: 'Hello User 2',
html: '<p>Welcome!</p>',
},
]);
response.results.forEach((result) => {
if (result.status === 'success') {
console.log('Sent:', result.message_id);
} else {
console.log('Failed:', result.message);
}
});Account Info
typescript
const info = await tosend.getAccountInfo();
console.log(info.account.title);
console.log(info.account.emails_usage_this_month);
console.log(info.account.emails_sent_last_24hrs);
info.domains.forEach((domain) => {
console.log(domain.domain_name, domain.verification_status);
});Error Handling
typescript
import { ToSend, ToSendError } from 'tosend';
try {
const response = await tosend.send({
from: { email: 'hello@yourdomain.com' },
to: [{ email: 'user@example.com' }],
subject: 'Hello',
html: '<p>Hello</p>',
});
} catch (error) {
if (error instanceof ToSendError) {
console.log('Error:', error.message);
console.log('Code:', error.code);
console.log('Errors:', error.errors);
if (error.isValidationError) {
// Handle validation error (422)
}
if (error.isAuthenticationError) {
// Handle auth error (401/403)
}
if (error.isRateLimitError) {
// Handle rate limit (429)
}
}
}TypeScript
Full TypeScript support with exported types:
typescript
import {
ToSend,
ToSendError,
SendEmailParams,
SendEmailResponse,
BatchEmailResponse,
AccountInfo,
Address,
Attachment,
} from 'tosend';