{"id":20197,"library":"mailgun.js","title":"Mailgun.js","description":"Mailgun.js v13.0.0 is a JavaScript SDK for the Mailgun API, supporting Node.js (>=18) and browser environments with CJS, ESM, and AMD bundles. It provides a full client for sending emails, managing mailing lists, domains, suppressions, routes, tags, events, and more. Active development (12 releases in 2 years, monthly cadence). Key differentiators: first-class TypeScript support, explicit FormData passing (universal), subaccount support, and EU API endpoint configuration.","status":"active","version":"13.0.0","language":"javascript","source_language":"en","source_url":"git://github.com/mailgun/mailgun.js","tags":["javascript","mailgun","email"],"install":[{"cmd":"npm install mailgun.js","lang":"bash","label":"npm"},{"cmd":"yarn add mailgun.js","lang":"bash","label":"yarn"},{"cmd":"pnpm add mailgun.js","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for multipart form data when sending emails with attachments","package":"FormData","optional":false}],"imports":[{"note":"Default import. In CJS: const Mailgun = require('mailgun.js')","wrong":"const { Mailgun } = require('mailgun.js')","symbol":"Mailgun","correct":"import Mailgun from 'mailgun.js'"},{"note":"Types are exported but not available in CJS require due to type stripping","wrong":"const { IMessagesClient } = require('mailgun.js')","symbol":"interfaces","correct":"import { IMessagesClient } from 'mailgun.js'"},{"note":"Named exports for classes/enums. Available both ESM and CJS","wrong":"import Mailgun from 'mailgun.js'; const { MailMan } = Mailgun","symbol":"Enums","correct":"import { MailMan } from 'mailgun.js'"}],"quickstart":{"code":"import Mailgun from 'mailgun.js';\nimport FormData from 'form-data';\n\nconst mailgun = new Mailgun(FormData);\nconst mg = mailgun.client({\n  username: 'api',\n  key: process.env.MAILGUN_API_KEY ?? 'your-api-key',\n});\n\n// Send an email\nmg.messages.create('sandbox.mailgun.org', {\n  from: \"Excited User <mailgun@sandbox.mailgun.org>\",\n  to: [\"recipient@example.com\"],\n  subject: \"Hello\",\n  text: \"Testing some Mailgun awesomeness!\",\n}).then(msg => console.log(msg))\n.catch(err => console.error(err));\n\n// List mailing lists\nmg.lists.list().then(lists => console.log(lists))\n.catch(err => console.error(err));","lang":"typescript","description":"Initializes mailgun client with API key, sends an email, and lists all mailing lists."},"warnings":[{"fix":"Use MailingListsClient.listByAddress(address) to search by address.","message":"In v13.0.0, the `address` property is removed from query parameters for MailingLists.list().","severity":"breaking","affected_versions":">=13.0.0"},{"fix":"Set up a server-side proxy to forward requests to Mailgun API.","message":"Browser usage requires a proxy due to CORS; do not expose private API key in frontend.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"const mailgun = new Mailgun(FormData); or import FormData from 'form-data';","message":"FormData must be passed to constructor. Starting from v3.0, FormData is required.","severity":"gotcha","affected_versions":">=3.0.0"},{"fix":"npm install mailgun.js","message":"The old 'mailgun-js' package is deprecated. Use 'mailgun.js' instead.","severity":"deprecated","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"import FormData from 'form-data'; or use built-in FormData in Node >=18.","cause":"Missing FormData import.","error":"Error: FormData is not a constructor"},{"fix":"npm install mailgun.js","cause":"Package not installed.","error":"Cannot find module 'mailgun.js'"},{"fix":"Ensure you call mailgun.client() and not use Mailgun directly.","cause":"Client not initialized correctly.","error":"TypeError: mg.messages.create is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}