Django send_mail() / EmailMessage with Gmail SMTP has 4-minute delay for new email recipients

I’m facing a consistent email delivery delay when using Django’s built-in send_mail() or EmailMessage functions with Gmail SMTP.

🔧Setup:

  • Backend: Django (tested with both send_mail() and EmailMessage)
  • SMTP: smtp.gmail.com with App Passwords
  • Recipients: New or first-time email addresses (e.g., new Gmail or company emails)
  • Sender: Personal Gmail account using App Password (not Google Workspace)
  • Observation:
    • Emails show up instantly in the sender's Sent folder.
    • Recipient receives the email after ~4 minutes delay, only on the first send.
    • On re-sending to the same recipient, delivery is almost instant.

📌 This is especially problematic for: Sign-up confirmation, OTP delivery, Real-time alerts or notifications

❌ What I’ve Tried:

  • Tested both old and new Gmail accounts.
  • Created new and old App Passwords.
  • Sent using both send_mail() and EmailMessage.
  • Tried different recipient domains (Gmail, Outlook, work domains, etc.).
  • Verified there’s no error or SMTP failure — just delay.

🧠 Additional Notes:

  • The issue does not occur for known recipients.
  • SMTP works fine; it's the delivery to new recipients that lags.
  • Server is configured correctly, no IPv6 hangups.
  • Delay seems similar to what Gmail does with anti-phishing checks, but I'm unsure if there’s a Django-specific fix or workaround.

❓ Question:

  • Is this behavior normal when using Gmail SMTP via Django?

  • Is there a known workaround to eliminate or reduce this delay for new recipients?

  • Would using OAuth or switching to a transactional email provider (SendGrid, Mailgun, etc.) help eliminate this delay?

that is normal.
When you send the email for the first time there are numerous verifications if you're using a standard email SMTP server.
If you want to improve that behavior i would advise you to use a transationnal email provider.

Solution: Fix Django Email Delay with Gmail SMTP

The 4-minute delay when sending emails to new recipients using Gmail SMTP with Django’s send_mail() or EmailMessage happens because Gmail checks new recipients for spam or phishing. This is normal for Gmail’s SMTP and not a Django issue.


Why the Delay?

• Gmail’s SMTP (smtp.gmail.com) is for personal use, not fast transactional emails.

• New recipient emails trigger Gmail’s anti-spam checks, causing a delay.

• Once a recipient is "known," emails are sent instantly.


Solution:

Use a Transactional Email Service (Best Option)

Services like SendGrid or Mailgun deliver emails quickly and reliably for tasks such as OTPs or sign-up confirmations. These services have free tiers and work well with Django.

Note: Gmail limits you to 100–150 emails/day, which isn’t great for apps.


Recommendation:

Switch to SendGrid or Mailgun for fast, reliable email delivery. Gmail SMTP isn’t built for real-time emails like OTPs or alerts.

Вернуться на верх