{"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,"search_vec":"'12':44 '18':14 '2':47 'activ':42 'amd':22 'api':11,66 'browser':16 'bundl':23 'cadenc':50 'cjs':19 'class':55 'client':28 'configur':68 'develop':43 'differenti':52 'domain':35 'email':31,71 'endpoint':67 'environ':17 'esm':20 'eu':65 'event':39 'explicit':58 'first':54 'first-class':53 'formdata':59 'full':27 'javascript':6,69 'key':51 'list':34 'mail':33 'mailgun':10,70 'mailgun.js':1,2 'manag':32 'month':49 'node.js':13 'pass':60 'provid':25 'releas':45 'rout':37 'sdk':7 'send':30 'subaccount':62 'support':12,57,63 'suppress':36 'tag':38 'typescript':56 'univers':61 'v13.0.0':3 'year':48","created_at":"2026-04-25T11:21:50.190055+00:00","updated_at":"2026-04-25T11:21:50.190055+00:00","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,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":"https://www.mailgun.com","github":"https://github.com/mailgun/mailgun.js","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/mailgun.js","openapi_spec":null,"status_page":null,"smithery":null,"categories":["communication"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-17","next_check":"2026-07-24","install_tag":null}}