Skip to main content

Mailgun

Mailgun is an email service provider that offers a RESTful API for sending emails from your Node.js application. OsmoX uses the official mailgun.js npm module for integration.

Configuration

Database Setup

Create a new entry in the notify_providers table with the following settings:
FieldValue
channel_type2 (Mailgun)
is_enabled1

Configuration Fields

MAILGUN_API_KEY
string
required
Your Mailgun API key
MAILGUN_HOST
string
required
Mailgun host: api.mailgun.net for US, api.eu.mailgun.net for EU
MAILGUN_DOMAIN
string
required
Your Mailgun domain name
Example Configuration:
{
  "MAILGUN_API_KEY": "your-api-key",
  "MAILGUN_HOST": "api.mailgun.net",
  "MAILGUN_DOMAIN": "your.mailgun.domain"
}

Request Format

Sample Request Body

{
  "providerId": 2,
  "data": {
    "from": "sender@example.com",
    "to": "recipient@example.com",
    "cc": "cc@example.com",
    "bcc": "bcc@example.com",
    "subject": "Test subject",
    "text": "This is a test notification",
    "html": "<b>This is a test notification</b>",
    "attachments": [
      {
        "filename": "names.txt",
        "content": "John Doe\nJane Doe"
      }
    ]
  }
}

Request Fields

from
string
required
Sender’s email address
to
string | string[]
required
Recipient’s email address
cc
string | string[]
CC email addresses
bcc
string | string[]
BCC email addresses
subject
string
required
Email subject line
text
string
Plain text version of the email
html
string
HTML version of the email
attachments
array
Array of attachment objects with filename and content

Attachments with Base64

Mailgun supports multiple MIME types with Buffer from base64. Here’s how to create a base64 string:
const fs = require('fs');

const filePath = 'path/to/your/file.pdf';
const fileData = fs.readFileSync(filePath);
const base64String = fileData.toString('base64');

console.log(base64String);

Dependencies

PackageVersionDescription
mailgun.js^10.2.3Mailgun client for JavaScript
form-data^4.0.0Form data handling for HTTP requests

Reference