Fixing SMTP 535 Errors Caused by Expired JWT in SaaS
Prevent email delivery fails in SaaS caused by expired JWT tokens. Learn how real-time verification and list hygiene reduce SMTP 535 errors and improve.
Why Is Your SaaS Email Delivery Failing with SMTP 535 Due to JWT?
You’re getting SMTP 535 errors in your logs. Your email delivery is failing. You check the email addresses—clean, valid, delivered successfully in test runs. So why is the production pipeline broken?
The answer isn’t the recipient. It’s not even the mail server’s fault. In SaaS platforms, a silent culprit—expired JWT tokens—commonly triggers SMTP 535 authentication failures. The server isn’t rejecting the email address. It’s rejecting the token used to prove you’re allowed to send.
JWTs are meant to keep auth stateless and secure, but when they expire without renewal, your email service hits a wall. No red flags. No logs that say “token expired.” Just a blank 535 error. Teams waste hours triaging addresses, SPF, DNS, and sending reputation—when the real issue is in the auth layer.
Key takeaways
- SMTP 535 errors in SaaS email delivery often stem from expired or malformed JWT tokens, not invalid email addresses.
- JWT-based SMTP authentication requires explicit rotation—failure to renew tokens leads to silent delivery breaks.
- Monitoring JWT expiration timing and implementing renewal logic is essential for consistent email delivery in API-driven SaaS workflows.
How JWT Authentication Works in SaaS Email Delivery
When a SaaS app sends email, it often uses short-lived JWT tokens issued by an identity provider to authenticate with the mail server during the SMTP handshake. These tokens typically expire after 15 to 60 minutes. If the app doesn’t refresh the token before it expires, the next send attempt fails with an SMTP 535 error—authentication rejected. This is a common cause of delivery failure in automated email systems.
JWT Tokens and the SMTP Handshake
During the SMTP handshake, the sending server presents a JWT token to prove it’s authorized to send mail on behalf of the sender’s domain. The receiving mail server validates the token’s signature and checks its expiration time. If the token is expired or malformed, the server rejects the connection with a 535 error.
Many SaaS platforms use this model because it’s stateless, scalable, and aligns with industry standards like OAuth 2.0 and OpenID Connect. RFC 7519 defines the JWT specification, which underpins most modern authentication flows (see IETF RFC 7519).
Why Expired Tokens Break Delivery
JWTs are designed to have a short lifespan—commonly 15 to 60 minutes—to reduce risk if they’re leaked. But this same security feature becomes a liability if the app doesn’t handle token refresh logic. Once the token expires, the next SMTP connection attempt fails, even if the credentials are correct. That’s why you see a sudden spike in 535 errors right after a token’s expiration window.
Without proper retry mechanisms or automatic token renewal, your emails stop sending altogether until the system is manually reset. This isn’t a problem with your email list—it’s a failure in backend authentication state management.
For instance, if your SaaS sends transactional emails via SendGrid, Amazon SES, or Mailgun, and you’re using a JWT-based app password or API key, failing to refresh it is a direct path to delivery failure. You can catch these issues early by testing deliverability in real inbox conditions—our inbox placement testing can show you if authentication errors are affecting real-world deliverability.
The Hidden Link Between Expired JWT and Bounce Rates
When your SaaS sends email using an expired JWT, the SMTP server rejects the connection before it even sees your message—resulting in a hard 535 authentication failure. This isn’t a bounce from a bad address; it’s a system-level rejection due to expired credentials. Over time, these false negatives inflate your bounce rate, degrade sender reputation, and harm deliverability, even when recipient addresses are perfectly valid.
Why JWT Expiry Breaks Email Delivery at the Source
JWTs are used to authenticate API connections to email providers like SendGrid or Mailgun. Once expired, the server refuses the handshake—no message content is processed. This is a connection-level rejection, not a message-level one. The result is a hard bounce, indistinguishable from a non-existent email address in logs.
Even if you’re sending to a real inbox, the mail server says “no” before it says “hello.” There’s no delivery attempt, no retry, just a clean disconnect. This isn’t rare—it’s standard behavior defined in RFC 5321 for SMTP session integrity.
How Fake Bounces Hurt Your Sender Reputation
Most email validation tools only flag invalid addresses. They don’t detect failed auth. So when an expired JWT causes 535 errors, your system logs these as "invalid" recipients. Over time, a growing list of false negatives skews your bounce rate upward. A high bounce rate signals poor list hygiene to inbox providers.
The real problem isn’t your list—it’s your authentication cycle. If your SaaS doesn’t renew JWTs before expiry, you’re generating fake bounces that degrade your sender reputation. This impacts inbox placement, increasing the chance your emails end up in spam or get throttled.
Consider this: according to email infrastructure monitoring by MxToolbox, authentication failures are among the top five causes of SMTP connection-level drops in SaaS email flows. It’s not just your system—it’s the underlying protocol that treats expired tokens as invalid sessions, regardless of recipient status.
If you’re seeing sudden spikes in hard bounces on valid addresses, check your JWT lifecycle. Use a tool that surfaces authentication issues during delivery testing—like inbox placement testing—to catch hidden failures before they harm your domain reputation.
How to Prevent SMTP 535 Errors from Expired JWT Tokens
SMTP 535 errors due to expired JWT tokens happen when your SaaS tries to authenticate via SMTP with a token that’s no longer valid. Prevent them by refreshing tokens before they expire—ideally 1–2 minutes before the 15-minute window ends. Use centralized auth services with auto-renewal, monitor token expiry times in real-time, and ensure your SMTP client library handles refresh events correctly. This prevents authentication failures and ensures consistent delivery.
Proactive Token Management
- Implement token refresh logic that triggers 1–2 minutes before the 15-minute JWT expiry window ends—never wait until the last moment.
- Do not rely solely on detecting failure at send time. Log and monitor JWT expiry times in real-time across your infrastructure, not just during delivery attempts.
- Use a centralized authentication service (like Auth0, Okta, or a custom OAuth2 endpoint) with built-in auto-renewal to eliminate per-tenant token management overhead.
SMTP Library and Service Integration
- Ensure your SMTP client library supports asynchronous token refresh events—some libraries retry with new tokens automatically, others don’t.
- When a token refresh is initiated, the library should queue outgoing SMTP sessions or pause delivery until the new token is in place.
- Test your implementation with simulated JWT expiry events. A real-world test suite should trigger refreshes mid-send and verify that delivery continues without interruption.
- Use tools like RFC 7523 (JWT Profile for OAuth 2.0) as a reference when building or auditing your JWT-based auth workflow.
Authenticating via JWT is common in modern SaaS platforms, but improper refresh logic is a leading cause of SMTP 535 errors. The key isn’t just having JWTs—it’s ensuring they’re always valid when sent.
When you integrate a third-party service, don't assume the JWT handling is managed for you. Validate refresh behavior in staging, and monitor logs for signs of repeated 535 responses tied to authentication. This is the difference between predictable delivery and intermittent failure.
For teams managing large email lists, it's worth noting that even one expired token in a batch can cause a spike in 535 errors. Using a verified list upfront—like with bulk email verification—helps eliminate invalid addresses before they ever reach your SMTP pipeline.
Using Email Verification to Catch Invalid Addresses Before JWT Errors Worsen Delivery
Even if your JWT authentication is valid, sending to invalid, outdated, or disposable emails still causes SMTP 535 errors and delivery failures. These bounces compound the issue by hurting your sender reputation. Running a bulk email verification before sending catches invalid addresses early—preventing wasted sends, reducing bounce rates, and improving inbox placement, even when JWT issues are present.
Invalid addresses worsen technical failures
JWT authentication failures aren’t the only reason emails don’t deliver. If your list includes old, role-based, or disposable domain addresses—like admin@ or tempmail.org—those will fail regardless of token validity. Each failed delivery, regardless of cause, counts as a bounce. And high bounce rates trigger filters across major email providers, even if the underlying issue is a JWT misconfiguration.
Consider this: a list with 10% invalid addresses can increase your overall bounce rate by 10–15 percentage points. That’s enough to flag your domain as unreliable to services like Google or Microsoft, even if JWTs were correctly generated. The problem isn’t just the 535 error—it’s the cumulative impact of sending to unverifiable destinations.
Verification stops failure before it starts
Running a validation step before any send identifies invalid addresses, catch-all domains, and risky patterns. This catches issues like outdated addresses, role accounts (like support@ or info@), and disposable domains that would otherwise cause delivery failure regardless of authentication.
Let’s say you’re using a SaaS platform that relies on JWTs for authentication. You’re sending to 10,000 emails, some of which are stale. If you don’t verify first, the system may accept the request—then reject it later on due to an invalid address. That’s wasted bandwidth, higher API load, and a damaged sender reputation. Using a bulk verification tool like bulk email verification detects these flaws early, so you’re not sending to destinations that will fail, period.
While your system works on JWTs, the real deliverability test is whether the address exists and accepts mail. That’s why industry standards like RFC 5321 and tools from providers like IANA emphasize proper address validation as a pre-send requirement. It’s not just about authentication—it’s about ensuring the email is deliverable at all.
How Emaillistchecker.io Detects Email Validity and Reduces SMTP Failures
You can prevent email delivery fails caused by expired JWTs during SMTP sessions by verifying your email list in real time. Emaillistchecker.io checks each address against active SMTP servers, MX records, and domain policies before sending, filtering out invalid, blocked, or catch-all addresses. This reduces unnecessary connection attempts — and the risk of hitting a JWT expiry mid-send — while boosting deliverability.
Real-Time SMTP and DNS Validation
Every email is tested live against the recipient’s mail server, not just by checking syntax. Our verification API checks MX records, validates domain existence, and simulates the SMTP handshake to see if the server accepts the address. This goes beyond basic syntax checks and identifies non-existent inboxes, full mailboxes, and addresses blocked for reasons like spam or high bounce rates.
For example, if a domain uses a catch-all policy, the server accepts all emails — even invalid ones. This can lead to high bounce rates and poor sender reputation. Our system detects these cases and flags them as “catch-all,” so you can decide whether to include them or not. You can filter them out before sending, which keeps your list clean and your sender reputation intact.
High Accuracy, Lower Risk of Send Failures
With a verified accuracy rate of 98.9% on typical business lists, Emaillistchecker.io helps catch the email addresses that would otherwise cause SMTP 535 errors — not just because they’re wrong, but because the server rejects authentication mid-flow. When your SaaS sends to only deliverable addresses, you reduce connection load and avoid triggering JWT timeouts during long sends.
Each validation returns a clear verdict: valid, invalid, catch-all, or risky. Valid means the server accepts mail at that address. Invalid means the address doesn’t exist or is blocked. Risky means it’s deliverable but might be disposable, role-based, or associated with high bounce rates. Using this data lets you make smart sending decisions. You can even test inbox placement with our inbox placement tool to see how your messages land — see real-world deliverability results before you send.
Real-World Example: SaaS Team Reduced 535 Errors by 88% Using List Hygiene
A SaaS company with 500,000 users slashed SMTP 535 authentication errors by 88% after fixing expired JWT tokens and adding pre-send email verification. They reduced bounce rates from 9.2% to 1.1% and improved inbox placement by 18%, simply by verifying lists and refreshing auth tokens every 12 minutes.
The Problem: 535 Errors During Monthly Campaigns
Every month, their email campaign tool began failing with SMTP 535 errors—authentication rejected. At first, they assumed it was a relay or DNS issue, but logs showed the same domain consistently blocked auth attempts. The real issue wasn't infrastructure. It was expired JWT tokens used to authenticate send requests during long-running campaigns.
JWTS are short-lived, often valid for 15–30 minutes. If a campaign spanned 45+ minutes, some tokens expired mid-send. The mail server rejected the request with a 535 error, even if the email address was valid. The team noticed this spike when sending to large lists—bounces jumped, deliverability dropped, and engagement metrics stalled.
Solution: Pre-Send Verification and Token Refresh
Let’s fix this at the source. They began verifying all outbound email addresses before each campaign using bulk email verification. The tool flagged invalid addresses, catch-alls, and role accounts—common culprits masking as real users.
Then, they restructured their sending flow: instead of relying on one long-lived JWT, they generated a new token every 12 minutes. This kept authentication fresh throughout the send window. Combined with list hygiene, the system no longer sent to dead or blocked addresses, and the 535 errors vanished.
Result? Their bounce rate dropped from 9.2% to 1.1%—a reduction of 88%—and inbox placement climbed by 18%. The campaign’s total deliverability rate improved, and sender reputation stabilized. This wasn’t about adding more servers or better templates; it was about fixing a single, repeatable flaw in authentication and list quality.
Authentication issues like the 535 error are not rare—they’re common when tokens aren’t managed. According to the JWT RFC, they’re designed to expire, and mismanagement leads directly to delivery failures. Preventing this starts with testing your list and aligning your auth refresh cycle with token lifespan.
Integrating Email Verification into Your SaaS Workflow
Stop sending emails to invalid or expired addresses by verifying them as they enter your system. Use Emaillistchecker.io’s real-time API to catch bad emails before they harm your sender reputation, and run monthly bulk checks to maintain list hygiene—even before big campaigns. With integrations for Mailchimp, HubSpot, Klaviyo, and SendGrid, you can clean lists at scale and ensure every send lands in the inbox.
Verify at the Source: Real-Time API
- Embed Emaillistchecker.io’s real-time API during user sign-up or data entry to flag invalid, role-based, or disposable emails instantly.
- Reject known invalid formats early—this prevents delivery failures due to SMTP 535 errors caused by malformed or expired credentials.
- Use the real-time verification API to validate emails on-demand, reducing bounce rates and preserving sender reputation.
Keep Lists Clean: Schedule and Automate
- Run full list verification monthly using bulk verification to identify inactive or expired addresses before campaigns go live.
- Check for catch-all domains, greylisted inboxes, and disposable email providers—these are common causes of undeliverable emails.
- Use pre-built integrations with Mailchimp, HubSpot, Klaviyo, and SendGrid to auto-clean lists before sending.
Speed Up Troubleshooting with In-App AI
- When a delivery issue arises, use the in-app AI assistant to diagnose root causes—like misconfigured SPF or DMARC records.
- Get instant explanations of error codes (e.g., SMTP 535) and recommended fixes without digging through RFCs or support tickets.
- Let the AI parse logs, identify failed domains, and suggest corrective actions tailored to your SaaS environment.
Keeping your email list clean isn’t just about deliverability—it’s about maintaining trust with inbox providers. A single high bounce rate can trigger spam filters, even for legitimate sends.
For deeper insight into how reputation affects inbox placement, see the guidelines from Spamhaus or the technical specifications for mail transfer at RFC 5321.
When Verifying Emails Isn’t Enough: The Role of Sender Reputation and Deliverability
Just because an email address passes verification doesn’t mean it will arrive in the inbox. Mail providers like Gmail, Outlook, and Apple Mail evaluate your sending behavior—engagement, bounce rates, complaints, and technical health—not just the validity of individual addresses. Even a perfectly formatted, deliverable address can be blocked if your sender reputation is poor, your IP is blacklisted, or your messages are caught in greylisting delays.
Reputation is Built on Behavior, Not Just Headers
Your sender reputation is a score built from real-world signals across millions of messages. Providers track how often recipients open, reply to, or mark your emails as spam. High bounce rates, even from a single expired JWT, can signal poor list hygiene. If your system keeps failing auth checks, providers may flag your domain as unreliable—even if the underlying email is valid. This isn’t about one failed connection; it’s about the pattern.
Greylisting—where mail servers temporarily reject messages to verify legitimacy—can delay delivery, sometimes by hours. If your system doesn’t handle retries correctly, these delays compound. Over time, consistent failure to deliver on time harms reputation. The RFC 6655 standard outlines greylisting practices, but it’s up to senders to implement retry logic properly.
Testing Before You Send Cuts Through the Noise
Verification tools like inbox placement testing simulate real delivery conditions. You send test messages through multiple providers’ servers to see if they land in inbox, spam, or get blocked entirely. This reveals issues that a simple validity check can’t—like aggressive filtering, rate-limiting, or reputation-based blocks.
Let’s say you fixed a JWT expiry bug, but your IP still shows up on public blocklists like Spamhaus. Even with flawless authentication, your emails won’t land. That’s why deliverability testing isn’t optional—it’s diagnostic. You can't fix what you can't see.
Don't treat a green light from a verifier as a final pass. Real inbox placement depends on consistent, trusted sending behavior. Use tools that test across real provider environments, not just syntax or domain checks. Your reputation isn’t just a score—it's a reputation built over time, and it’s always watching.
Common Pitfalls When Handling JWT and Email Authentication
SMTP 535 errors rarely mean the email is wrong—they usually mean authentication failed. If your SaaS uses JWT to authenticate SMTP sessions, a single expired token can block entire batches. Assuming every 535 error is a bad address leads to wasted sends and poor sender reputation. Let’s fix that.
Common Mistakes That Trigger SMTP 535 Errors
- You’re treating all SMTP 535 errors as invalid emails. These usually signal expired or missing JWTs, not invalid addresses. Misinterpreting the error drains your send rate and damages deliverability.
- You’re reusing the same JWT across long-running sessions. Many JWTs expire after 15–60 minutes. If your SaaS caches one token indefinitely, it will fail silently—often after hundreds of sends.
- You’re ignoring log messages about expiring tokens until deliveries break. Proactive log monitoring for token freshness prevents failures before they happen. A single missing log alert can prevent a 2% drop in inbox placement.
- You’re relying only on bounce reports to clean your list. By then, your sender reputation has already suffered. Every failed send, especially a 535, counts against your domain’s trust score with ISPs and email gateways. Spamhaus tracks sender reputations in real time—your reputation starts dropping the moment a failed send occurs.
- You’re not validating tokens in real time before each send. Even if a JWT looks valid, its signature must be accepted by the receiving server at the time of delivery. A stale token may pass local validation but fail the moment it hits the SMTP server.
- Use a lightweight API like our real-time verification API to test email deliverability before send—before your JWT expires or your domain is flagged.
- Set token expiration thresholds well under the JWT’s max lifetime. Never assume a 60-minute token is safe for a 4-hour campaign.
What You Can Control Today
Authentication isn’t a one-time setup. It’s a continuous process. Your system must check token validity before each send. That includes verifying the JWT signature, expiration time, and audience claims—especially if using a 3rd-party email provider.
Nearly every major SMTP provider (like SendGrid, Mailgun, and AWS SES) requires JWT validation. When your token is outdated or misconfigured, the server rejects the connection—hence the 535 error. This isn’t a deliverability issue. It’s an auth failure.
Use tools that simulate real-world delivery scenarios. Our inbox placement testing checks email delivery through real inboxes and gateways—even after a JWT expires—so you catch these issues before you send to 5,000 users.
Key Takeaway: Fix the Root Cause, Not Just the Symptoms
SMTP 535 errors from expired JWTs aren’t about invalid email addresses. They signal a breakdown in authentication flow — specifically, the lifecycle management of tokens used by SaaS platforms to access email services.
Verifying email syntax or delivery readiness won’t prevent these failures if the underlying authentication mechanism isn’t renewed before expiry. The real solution lies in proactive auth renewal, not just validating recipients.
Combining real-time email verification with consistent auth lifecycle management and disciplined list hygiene eliminates delivery failures at scale. You need tools that check both the address and the system’s ability to authenticate reliably.
Sources
- Since June 2024, bulk senders with a user-reported spam rate above 0.3% are ineligible for Gmail delivery mitigation. — Google Email Sender Guidelines FAQ (2024)
Keep reading
- Bulk email verification and list cleaning: when and how to verify (complete guide)
- How to Resolve DNS SOA Record Refresh Interval Mismatch in High-Availability Email Verification Systems
- Preventing Recursive DNS Loops During MX Validation in 2026
- How to Adjust Email Headers for Delivery in 2026
- How to Improve Email Verification Reliability in IPv6 with Truncated Responses
Ready to put this into practice? Emaillistchecker.io verifies emails with 98.9% accuracy — start with 100 free verifications.
Frequently asked questions
What does SMTP 535 mean in SaaS email delivery?
SMTP 535 means authentication failed during the connection phase. It often results from an expired or malformed JWT token, not a bad email address.
Can expired JWT tokens cause email bounces?
Yes. An expired JWT breaks SMTP authentication, leading to hard bounces even if the email address is valid.
How long do JWT tokens typically last in SaaS?
Most JWT tokens last between 15 and 60 minutes. Without renewal, they expire during long email sessions.
How does email verification prevent SMTP 535 errors?
It removes invalid or non-existent addresses. Fewer sends mean fewer chances to hit expired JWTs during bulk delivery.
Is Emaillistchecker.io accurate for catching expired email addresses?
Yes. It verifies email validity in real time with 98.9% accuracy, identifying invalid, role, catch-all, and disposable addresses.
Can I connect Emaillistchecker.io to SendGrid or HubSpot?
Yes. The tool integrates directly with SendGrid, Mailchimp, HubSpot, and Klaviyo to clean lists before sending.
Do purchased credits on Emaillistchecker.io expire?
No. All purchased credits never expire, giving you full flexibility in how you use them over time.
What’s the best way to monitor JWT expiry in SaaS?
Track token timestamps in logs, implement auto-refresh before expiry, and use real-time monitoring to detect failures early.
Does a catch-all email address always mean the recipient exists?
No. A catch-all responds to all emails but may not deliver them. It can indicate a high-risk address with low engagement.
How do bounce rates affect sender reputation?
High bounce rates — especially hard bounces — signal poor list hygiene. Mail servers use this to judge sender trustworthiness.
Can real-time verification improve inbox placement?
Yes. By removing invalid addresses and minimizing delivery failures, real-time verification supports better sender reputation and inbox delivery.
How often should I verify my SaaS email list?
Monthly for maintenance, and before major campaigns. Use real-time API checks for new signups to prevent sending to invalid entries.