Back to Learning CenterEmail Authentication

Valid Characters for an Email Address

By Samuel ChenardAugust 25, 20267 min read

In brief

Valid characters for an email address are letters, digits, and punctuation such as ! # $ % & ' * + - _ in the local part, with dots only between them.

Valid Characters for an Email Address

Valid characters for an email address depend on where they appear. In an ordinary unquoted local part before @, RFC email syntax allows ASCII letters, digits, selected punctuation, and single dots between other characters. The domain after @ follows domain-label rules. Quoted local parts and SMTPUTF8 permit more characters, but a syntactically valid address can still be rejected by a signup form, provider, or receiving mailbox.

At a glance

Quick takeaways

  • The local part and domain follow different character rules.
  • An unquoted local part can contain more punctuation than many forms accept.
  • A dot cannot begin or end an unquoted local part, and two dots cannot be adjacent.
  • An apostrophe is valid in an unquoted local part under RFC 5322.
  • A quoted local part can represent spaces and other characters, but support varies.
  • Non-ASCII mailbox characters require SMTPUTF8 support along the delivery path.

Who is affected?

These rules affect form developers, identity teams, email senders, mailbox providers, and support staff deciding whether an address is malformed. The same address can pass the Internet Message Format grammar and still fail a product's account policy or a provider's mailbox rules.

Separate three questions:

  • Is the string valid under the applicable email syntax?
  • Does the application choose to accept that valid syntax?
  • Does a mailbox exist and accept mail at that address?
The article on checking email address deliverability covers the third question. This page owns the syntax question.

What are the requirements?

An email address has a local part and a domain

RFC 5322 defines addr-spec as a local part, an @ sign, and a domain. The local part identifies the mailbox within the domain's rules. The domain identifies the system responsible for that namespace.

Technical exampletext
local-part@domain

Do not validate both sides with one character class. A punctuation mark allowed before @ can be invalid in a domain label.

An unquoted local part allows letters, digits, and selected punctuation

RFC 5322 defines the atext character set. An unquoted local part can use ASCII letters, digits, and these printable characters:

Technical exampletext
Letters:       A-Z a-z
Digits:        0-9
Other ASCII:   ! # $ % & ' * + - / = ? ^ _ ` { | } ~
Separator:     .  only between non-dot elements

That makes addresses such as o'connor@example.com, sales+ca@example.com, and first_last@example.com syntactically possible. It does not require a provider to create or accept those mailboxes.

Dots have placement rules

The unquoted dot-atom form permits a dot only between other atext runs. An unquoted local part cannot start with a dot, end with a dot, or contain two adjacent dots.

Technical exampletext
Valid dot shape:     first.last@example.com
Invalid dot shapes:  .first@example.com
                     first.@example.com
                     first..last@example.com

Provider-specific behavior can be narrower or different after syntax is accepted. For example, the separate guide on dots in Gmail addresses explains how personal Gmail delivery treats dot variants.

Quoted local parts permit a wider ASCII range

RFC 5322 also allows a quoted-string local part. Quoting can represent spaces and characters that are not valid in an unquoted dot-atom, with escapes where the grammar requires them.

Technical exampletext
"customer support"@example.com

This is a syntax example, not a claim that every signup form or provider accepts quoted mailbox names. A production sender should test the systems that create, store, transport, and receive the address before relying on this form.

The domain follows domain-label rules

RFC 5321's mailbox grammar uses domain labels made from letters, digits, and hyphens, separated by dots. A label cannot begin or end with a hyphen. An underscore is therefore not valid in an ordinary mailbox domain label, even though underscores appear in other DNS names such as _dmarc.example.com.

SMTPUTF8 extends mailbox syntax beyond ASCII

RFC 6531 defines the SMTPUTF8 extension, which permits UTF-8 in mailbox addresses when the SMTP systems involved support the extension. A Unicode address is not safe to downgrade by deleting or replacing characters. Preserve it exactly and confirm support on the intended delivery path.

Decision flow for validating the local part, domain, and SMTPUTF8 requirement of an email address
Source: Palisade diagram based on RFC 5322 address syntax, RFC 5321 mailbox syntax, and RFC 6531 SMTPUTF8.

When does the requirement take effect?

RFC 5321 and RFC 5322 define the modern baseline SMTP and message-format syntax. RFC 6531 adds internationalized mailbox support through SMTPUTF8. There is no single provider effective date that makes every syntactically valid address usable everywhere.

An application can adopt narrower product rules, but it should describe those as application limits instead of declaring an RFC-valid address universally invalid. Review the rule whenever an identity provider, mailing platform, or mailbox system changes.

How do I implement the requirement?

1. Preserve the address exactly as entered

Trim only surrounding input whitespace that is not part of the address field. Do not remove punctuation, change Unicode characters, or lowercase the stored local part as an automatic repair.

2. Parse the local part and domain separately

Split at the structural @ boundary with a parser that supports the address forms your product accepts. Avoid a short regular expression that silently rejects apostrophes, plus signs, or internationalized addresses without a documented product reason.

3. Apply a documented product policy

Decide whether the product supports quoted local parts and SMTPUTF8 addresses. Return a precise error when the product accepts less than the RFC grammar. Do not call a valid but unsupported address malformed.

4. Verify control and test delivery separately

Send a verification message through the actual production path. Syntax validation cannot prove that the domain resolves, the mailbox exists, or the person controls it. For public domain evidence, a DNS lookup can show the domain's current records without validating the mailbox.

How do I validate compliance?

Build tests from each supported class rather than one list of familiar addresses. Include ordinary letters and digits, apostrophes, plus signs, underscores in the local part, legal dot placement, illegal dot placement, a quoted local part if supported, and a UTF-8 address if SMTPUTF8 is supported.

Record three outcomes for each case: parser acceptance, account-verification behavior, and actual message delivery. A parser pass is syntax evidence. A verification click is control evidence. SMTP acceptance is delivery evidence. None of those alone proves future inbox placement.

Keep this work within the broader email infrastructure hub, where DNS, SMTP, message headers, and transport rules are treated as separate evidence layers.

Evidence

Sources and further reading

Questions readers ask

Frequently asked questions

Make email authentication easier to manage

Start in Palisade.

Get started

Share this article

Samuel Chenard

Written by

Samuel Chenard

CEO & Co-Founder, Palisade

Samuel Chenard is the CEO and co-founder of Palisade, AI-first DMARC software for IT teams and MSPs, from one domain to thousands.

More from Samuel

Related articles and tools