Mailbase
FeaturesPricingDocsBlogComparisonsChangelog
Sign inStart free
Home/Blog/SMTPUTF8 and International Email Addresses: A Practical Guide
Email infrastructureUpdated August 4, 20269 min read

SMTPUTF8 and International Email Addresses: A Practical Guide

A practical SMTPUTF8 guide for accepting, storing, sending to, and troubleshooting international email addresses without confusing Unicode local parts with IDN domains.

By Mailbase Team · Target keyword: SMTPUTF8 international email addresses
Glowing network cables converging into a switch — SMTPUTF8 and International Email Addresses: A Practical Guide
Photo from Unsplash
On this page
OverviewSeparate the local part from the domain before transforming anythingNegotiate SMTPUTF8 across the actual delivery pathBuild a Unicode-aware address data modelChoose an honest fallback instead of silently rewriting the addressUse a fixture matrix that exercises identity and transportMake international address support an explicit service contractCommon MistakesSources & Further ReadingRelated guidesFAQRelated reading

Overview

SMTPUTF8 is the SMTP extension that permits internationalized mailbox addresses and messages requiring UTF-8 header support. An address such as 用户@例子.公司 can contain non-ASCII characters on both sides of the at sign. That is different from an ASCII local part on an internationalized domain: the domain can often be represented as an IDNA A-label, while a non-ASCII local part cannot be made SMTP-compatible by applying Punycode to the whole address.

Supporting these addresses is a delivery-path decision, not just a form-validation change. Your application, database, email composer, submission provider, relays, bounce processing, inbound parser, and downstream identity integrations all need compatible behavior. If the next SMTP server does not advertise SMTPUTF8, RFC 6531 says an SMTPUTF8-aware client must not send the internationalized message to it.

Separate the local part from the domain before transforming anything

Hands typing on a laptop keyboard in an inbox view — Separate the local part from the domain before transforming anything
Photo from Unsplash

Split an address at the syntactically valid mailbox boundary using an email-address parser, not the first or last at sign in an arbitrary string. The domain participates in DNS and can have a Unicode U-label form and an ASCII-compatible A-label form under IDNA. The local part belongs to the mailbox provider. SMTPUTF8 extends it to permit non-ASCII characters, but it does not turn the local part into an IDN and does not authorize a client to Punycode it.

Keep a display form for the user and derive a domain lookup form through a maintained IDNA library. Do not invent a supposedly equivalent ASCII local part, strip accents, or transliterate characters: that can silently address a different mailbox. Also avoid unconditional lowercasing of the full address. Domain comparison is case-insensitive, but applications should preserve the local part unless the responsible mailbox provider has supplied a stronger canonicalization rule.

  • Use separate fields for address data and display names
  • Reject control characters and header injection before composition
  • Preserve the exact accepted address for confirmation and support
  • Do not claim that converting the domain creates an ASCII fallback for a Unicode local part
Address componentSafe handlingUnsafe shortcut
Local partPreserve Unicode and provider-defined identityPunycode, transliterate, or strip characters
DomainProcess with a maintained IDNA/DNS libraryTreat Unicode display text as an unvalidated DNS key
Full addressStore the accepted original plus deliberate derived fieldsLowercase and rewrite the entire string blindly
Display nameParse and encode as a message-header fieldConcatenate user input into a raw From or To line

Negotiate SMTPUTF8 across the actual delivery path

Designer working on layouts on a laptop — Negotiate SMTPUTF8 across the actual delivery path
Photo from Unsplash

An SMTP client learns support from the server's EHLO response. RFC 6531 defines SMTPUTF8 as the extension keyword and the SMTPUTF8 parameter on MAIL. When a transaction requires the extension, the client must request it; a library should not merely emit UTF-8 bytes and hope every relay accepts them. A provider API may hide that conversation, so its documented and observed behavior becomes part of your contract.

Test more than the first submission hop. Your API provider may accept the address but later route through a system without the capability, reject a recipient asynchronously, or expose internationalized data incorrectly in a webhook. Inbound replies, forwarding, mailing lists, delivery-status notifications, and support exports are separate paths. Record which paths are supported instead of applying one global 'Unicode enabled' flag.

  1. Determine whether the envelope sender, any envelope recipient, or message headers require SMTPUTF8.
  2. Confirm that the submission service or SMTP server explicitly supports internationalized email.
  3. Submit with a maintained library that negotiates SMTPUTF8 and serializes UTF-8 headers correctly.
  4. Capture synchronous acceptance and recipient-level asynchronous events.
  5. Round-trip a reply and a delivery failure through production-like inbound processing.
  6. Document unsupported routes and prevent them before a user depends on delivery.
PathCapability questionEvidence
Application to providerDoes submission accept and preserve the address?API response or SMTP transcript
Provider to recipientCan the outbound route deliver with SMTPUTF8?Recipient event and received source
Bounce pathCan status data represent the original address?Parsed DSN or authenticated webhook
Reply pathCan inbound parsing and threading preserve it?Round-trip reply fixture
Exports/integrationsDo downstream systems retain Unicode safely?Import-export and API contract tests

Build a Unicode-aware address data model

Validation should answer staged questions. Is the input structurally a mailbox? Is its Unicode well formed? Can the domain be processed for DNS? Does your chosen sending path support the required capabilities? Does the recipient domain appear deliverable under the checks your workflow normally performs? One giant regular expression cannot answer all of these, and an SMTP probe is not proof that a mailbox belongs to the user.

Store strings in Unicode-capable columns without lossy conversions. Keep the original accepted address, parsed local part, normalized domain lookup form, and any provider recipient identifier in explicit fields. RFC 6532 recommends NFC for UTF-8 header content, but normalization is not permission to guess mailbox equivalence. Apply a documented normalization step at a controlled boundary, preserve the original, and test visually similar and canonically equivalent input rather than deduplicating on appearance.

  • Do not use byte length when the product limit is defined in characters—or vice versa
  • Test database indexes, queue payloads, logs, CSV exports, and webhook signatures with UTF-8 fixtures
  • Avoid logging full addresses when a redacted stable identifier answers the operational question
  • Verify ownership with a confirmation flow rather than syntax alone
FieldPurposeRule
address_originalUser confirmation, display, and supportPreserve the accepted value
local_partMailbox identityUnicode-capable; no invented ASCII alias
domain_unicodeHuman-readable domain formValidate with the chosen IDNA policy
domain_asciiDNS lookup and compatibility formDerive with a maintained IDNA library
provider_recipient_idEvent correlationTreat as provider data, not address identity

Choose an honest fallback instead of silently rewriting the address

The cleanest fallback is an alternate ASCII address that the user or mailbox provider explicitly supplies. It is not a transliteration generated by your application. If your provider or a required downstream system cannot support the internationalized mailbox, explain the limitation before accepting it for login, billing, password recovery, or another critical workflow.

Separate product acceptance from send eligibility. A CRM may retain an internationalized contact even while a particular campaign route cannot send to it. Mark the route as unsupported with a reason code, keep the contact out of retry loops, and allow a verified alternate address to be attached deliberately. Never classify capability failure as a hard bounce from the recipient and never suppress a mailbox globally because your own route lacked SMTPUTF8.

  • Make fallback consent explicit
  • Show which address receives security and billing messages
  • Keep provider capability errors distinct from recipient delivery errors
  • Offer support a safe way to inspect parsed components and route decisions
SituationRecommended decisionAvoid
Full path supports SMTPUTF8Accept, verify, send, and monitorAssuming support without a round trip
User provides a verified ASCII alternateStore both with explicit rolesReplacing the primary address invisibly
Critical route lacks supportBlock that route with a clear explanationAccepting it and failing after signup
Temporary provider uncertaintyQuarantine or retry only after capability is establishedRepeated blind submission
Your route rejects the addressRecord capability failure separatelyGlobal hard-bounce suppression

Use a fixture matrix that exercises identity and transport

Create controlled fixtures rather than testing with arbitrary addresses found online. Include an ASCII local part and ASCII domain, an ASCII local part with an internationalized domain, a non-ASCII local part with an ASCII domain, both sides internationalized, combining characters, a long display name, plus malformed and control-character cases. Provision only addresses you own or use a provider-supported test environment.

For each accepted fixture, test signup or import, confirmation, storage, queue serialization, provider submission, delivered headers, click or delivery webhooks if enabled, reply ingestion, bounce handling, export, re-import, search, masking, and deletion. Compare code points or escaped representations in diagnostics when two strings look alike. The goal is not merely 'the email arrived'; it is that the same intended identity survives every system boundary.

  • Include mixed-script and lookalike cases in security review
  • Render confirmation screens so users can spot a mistaken address
  • Retest when changing the address parser, IDNA library, provider, queue, or identity system
  • Never place real customer addresses in reusable test fixtures
  1. List every boundary that reads, transforms, signs, stores, or displays an address.
  2. Create positive and negative fixtures for each address-component combination.
  3. Assert parsed components and derived domain forms before sending.
  4. Send through the production-like route and inspect the received raw source.
  5. Exercise replies, bounces, duplicate events, exports, and account recovery.
  6. Record unsupported combinations as product requirements, not undocumented bugs.

Make international address support an explicit service contract

Publish the real support boundary internally: accepted scripts and syntax policy, parser and IDNA versions, provider capability, supported inbound paths, fallback behavior, and which products can use an internationalized address. Add a capability-specific failure code and dashboard dimension so support can distinguish malformed input, unsupported transport, provider rejection, and recipient-domain failure.

Mailbase's relevant role is the workflow layer around the send: contact and campaign data, durable jobs, provider events, suppressions, and reply handling. The connected delivery provider still determines SMTPUTF8 transport support. Before using an internationalized address in a Mailbase workflow, verify the configured sending and inbound paths end to end; do not infer capability from Mailbase accepting Unicode text in a contact or template field.

  • Expose capability separately for each configured sending route
  • Preserve provider diagnostics without exposing addresses broadly
  • Alert on a rise in unsupported-address failures after dependency changes
  • Review internationalized-address support before promising global account recovery
OwnerResponsibilityEvidence
Identity/productAcceptance, confirmation, alternate-address policyUser-facing flow tests
ApplicationParsing, storage, comparison, and safe compositionUnicode fixture suite
Provider/transportSMTPUTF8 negotiation and recipient deliveryCapability docs, transcript, and round trip
Email operationsEvents, replies, bounces, and failure classificationRecipient timeline and runbook
Security/privacyLookalike risk, logs, retention, and accessThreat review and redaction tests

Common Mistakes

  • Choosing a tool before deciding who owns deliverability.
  • Treating DNS authentication as a one-time checkbox instead of an operating baseline.
  • Mixing product-critical transactional email with experimental marketing sends, with no clear boundary.
  • Trusting headline metrics (like open rate) that privacy proxies now inflate.

Sources & Further Reading

Official docs for current setup details, pricing, and API behavior — verify specifics there, since they change.

RFC 6531: SMTP Extension for SMTPUTF8
RFC 6532: Internationalized Email Headers
RFC 6530: Internationalized Email Overview

Related guides

More on smtputf8 international email addresses and the surrounding email infrastructure workflow:

Mailbase API docs
API token docs
transactional email for SaaS
email API vs SMTP
SMTP relay for SaaS
AWS SES email stack
email localization
Try Mailbase free
Send 200 emails a month on us. Paid plans start at €9 — or bring your own useSend for €5.
See plans

FAQ

What is SMTPUTF8?

SMTPUTF8 is the SMTP extension defined by RFC 6531 for transactions involving internationalized mailbox addresses or messages that require UTF-8 header support. A client discovers it in the server's EHLO response and requests it on the MAIL command when required.

Can an email address contain Unicode characters before the at sign?

Yes, when the delivery path supports internationalized email and SMTPUTF8. The non-ASCII local part is controlled by the mailbox provider; applications must not Punycode or transliterate it into a guessed ASCII mailbox.

Is Punycode enough to support an international email address?

No. IDNA can represent an internationalized domain in an ASCII-compatible A-label form, but that only addresses the domain side. A non-ASCII local part still requires SMTPUTF8 support across the relevant transport path.

What should happen if the receiving server does not support SMTPUTF8?

Do not send an internationalized message to that server. Use an alternate ASCII address only if the user or mailbox provider explicitly supplied and verified it, or explain that the route is unsupported. Do not silently transliterate the mailbox.

Should email addresses be normalized and lowercased?

Process the domain with a defined IDNA policy and preserve the original accepted address. Do not blindly lowercase or rewrite the full mailbox. Any local-part canonicalization should come from the responsible mailbox provider, while Unicode normalization must be deliberate, tested, and non-lossy.

Related reading

Transactional email7 min read
Transactional Email for SaaS: The Practical Guide
A practical guide to transactional email for SaaS: what counts as transactional, choosing an API or SMTP provider, templates, deliverability, idempotency, and the operations that keep critical mail flowing.
Deliverability7 min read
Email API vs SMTP: Which Should You Use?
Email API vs SMTP compared for SaaS: how each works, reliability, speed, debugging, features, and portability — plus why many teams use both.
Transactional email7 min read
SMTP Relay for SaaS Apps: What to Use and Why
What an SMTP relay is, when a SaaS app should use one, how it differs from an email API, the providers to consider, and the DNS and production tradeoffs.
Transactional email7 min read
AWS SES Email Stack for SaaS Builders
How to think about Amazon SES as part of a SaaS email stack: what SES is and isn't, the layers you build on top of it, the sandbox/SNS setup, and where it fits versus a full API.
Email marketing9 min read
Email Localization: A Practical Guide for Global Sends
A practical email localization playbook for teams sending newsletters, lifecycle campaigns, and transactional messages across languages and regions.
Email infrastructure9 min read
Email Webhook Events: A Practical Processing Guide
A practical email webhook events playbook for building idempotent ingestion, clean event models, suppression updates, and reliable analytics.
Mailbase
Product
FeaturesPricinguseSend integrationChangelog
Learn
BlogDocsAPI referenceResources
Compare
ComparisonsAlternatives
Guides
Transactional email servicesSelf-hosted useSend stackSelf-hosted email marketingSPF, DKIM & DMARCEmail deliverability
Legal
TermsPrivacy
© 2026 Mailbase · french-webEmail workflow for builders.