Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.mailblock.de/llms.txt

Use this file to discover all available pages before exploring further.

Getting Started with Mailblock SDK

This guide will help you get up and running with the Mailblock SDK in just a few minutes.

Prerequisites

  • Node.js 14 or higher
  • A Mailblock API key MailBlock

Installation

Install the SDK using npm:
npm install mailblock
Or using yarn:
yarn add mailblock

Basic Setup

Import and initialize the SDK with your API key:
import Mailblock from 'mailblock';

const client = new Mailblock('your-api-key-here');

Sending Your First Email

Here’s how to send a simple email:
const result = await client.sendEmail({
  to: 'recipient@example.com',
  from: 'sender@yourdomain.com',
  subject: 'Hello from Mailblock!',
  text: 'This is my first email using the Mailblock SDK.'
});

if (result.success) {
  console.log('Email sent successfully!');
  console.log('Email ID:', result.data.id);
} else {
  console.error('Failed to send email:', result.error);
}

Using Method Chaining

The SDK also supports a fluent, chainable API:
const result = await client.email()
  .to('recipient@example.com')
  .from('sender@yourdomain.com')
  .subject('Hello from Mailblock!')
  .text('This email was sent using method chaining.')
  .send();

Sending HTML Emails

You can send rich HTML emails instead of plain text:
const result = await client.sendEmail({
  to: 'recipient@example.com',
  from: 'sender@yourdomain.com',
  subject: 'Welcome to Our Service',
  html: `
    <h1>Welcome!</h1>
    <p>Thanks for signing up. We're excited to have you on board.</p>
    <a href="https://yoursite.com/dashboard">Get Started</a>
  `
});

Sending to Multiple Recipients

Send emails to multiple people with CC and BCC support:
const result = await client.sendEmail({
  to: ['user1@example.com', 'user2@example.com'],
  cc: 'manager@example.com',
  bcc: ['audit@example.com', 'admin@example.com'],
  from: 'sender@yourdomain.com',
  subject: 'Team Update',
  text: 'This email goes to multiple recipients.'
});
You can also use method chaining with multiple recipients:
const result = await client.email()
  .to(['primary@example.com', 'secondary@example.com'])
  .cc('supervisor@example.com')
  .bcc(['audit@example.com'])
  .from('system@yourdomain.com')
  .subject('System Notification')
  .text('Multiple recipients via method chaining.')
  .send();

Scheduling Emails

Schedule emails to be sent at a future date and time:
// Schedule email for 1 hour from now
const scheduledTime = new Date(Date.now() + 60 * 60 * 1000);

const result = await client.sendEmail({
  to: 'recipient@example.com',
  from: 'sender@yourdomain.com',
  subject: 'Scheduled Email',
  text: 'This email was scheduled to be sent later.',
  scheduledAt: scheduledTime
});

if (result.success) {
  console.log('Email scheduled successfully!');
}
You can also use ISO date strings:
const result = await client.sendEmail({
  to: 'recipient@example.com',
  from: 'sender@yourdomain.com',
  subject: 'Scheduled Email',
  text: 'This email was scheduled using an ISO string.',
  scheduledAt: '2024-12-25T09:00:00.000Z' // Christmas morning
});

Managing Scheduled Emails

Canceling Scheduled Emails

Cancel scheduled emails before they’re sent:
// Cancel a single email
const cancelResult = await client.cancelEmail('email-id-123');

if (cancelResult.success) {
  console.log('Email cancelled successfully!');
  console.log('Previous status:', cancelResult.data.previous_status);
  console.log('Current status:', cancelResult.data.current_status);
}

// Cancel multiple emails at once
const emailIds = ['id-1', 'id-2', 'id-3'];
const bulkResult = await client.cancelEmails(emailIds);

if (bulkResult.success) {
  console.log(`Cancelled ${bulkResult.data.success_count} emails`);
  console.log(`Failed to cancel ${bulkResult.data.error_count} emails`);
}

Updating Scheduled Emails

Modify scheduled emails before they’re sent:
// Update email content
const updateResult = await client.updateScheduledEmail('email-id-123', {
  subject: 'Updated: Meeting Postponed',
  body_text: 'The meeting has been moved to next week.',
  body_html: '<p><strong>Updated:</strong> The meeting has been moved to next week.</p>'
});

// Reschedule an email
await client.updateScheduledEmail('email-id-456', {
  scheduled_at: new Date(Date.now() + 7200000) // Send in 2 hours instead
});

// Convert scheduled email to immediate send
await client.updateScheduledEmail('email-id-789', {
  scheduled_at: null, // Send immediately
  subject: 'Urgent: Sending Now!'
});

Environment Configuration

For production applications, use environment variables for your API key:
// .env file
MAILBLOCK_API_KEY=your-api-key-here
// Your application
import Mailblock from 'mailblock';

const client = new Mailblock(process.env.MAILBLOCK_API_KEY);

Debug Mode

Enable debug mode during development to see detailed logs:
const client = new Mailblock('your-api-key', { 
  debug: true 
});

// Now you'll see detailed logs for all API calls
const result = await client.sendEmail({
  to: 'test@example.com',
  from: 'sender@yourdomain.com',
  subject: 'Debug Test',
  text: 'Testing with debug mode enabled'
});
Debug logs include:
  • Request details and timing
  • API responses
  • Error information
  • Performance metrics

TypeScript Support

The SDK includes full TypeScript support out of the box:
import Mailblock, { 
  EmailOptions, 
  EmailResponse, 
  CancelEmailResponse, 
  UpdateEmailOptions 
} from 'mailblock';

const client: Mailblock = new Mailblock('your-api-key');

// Send email with full type safety
const emailOptions: EmailOptions = {
  to: ['recipient@example.com', 'user2@example.com'],
  cc: 'manager@example.com',
  bcc: ['audit@example.com'],
  from: 'sender@yourdomain.com',
  subject: 'TypeScript Email',
  text: 'This email was sent with full type safety!'
};

const result: EmailResponse = await client.sendEmail(emailOptions);

// Cancel email with typed response
const cancelResult: CancelEmailResponse = await client.cancelEmail('email-id');

// Update email with typed options
const updates: UpdateEmailOptions = {
  subject: 'Updated Subject',
  body_text: 'New content',
  scheduled_at: new Date(Date.now() + 3600000)
};

await client.updateScheduledEmail('email-id', updates);

Error Handling

The SDK uses a consistent response format that makes error handling straightforward:
const result = await client.sendEmail({
  to: 'invalid-email', // This will cause a validation error
  from: 'sender@yourdomain.com',
  subject: 'Test',
  text: 'Test message'
});

if (!result.success) {
  console.log('Error Type:', result.errorType); // 'VALIDATION_ERROR'
  console.log('Error Message:', result.error);  // 'Invalid recipient email address: invalid-email'
  console.log('Suggestion:', result.suggestion); // Helpful tip for fixing the error
  console.log('Request ID:', result.requestId);  // For support/debugging
}

Next Steps

Now that you’ve sent your first email, you might want to:

Need Help?