https://tools.ietf.org/html/rfc2822#section-3.4
atext = ALPHA / DIGIT / ; Any character except controls, "!" / "#" / ; SP, and specials. "$" / "%" / ; Used for atoms "&" / "'" / " * " / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
atom = [CFWS] 1 * atext [CFWS]
dot-atom = [CFWS] dot-atom-text [CFWS]
dot-atom-text = 1 * atext * ("." 1 * atext)
...
addr-spec = local-part "@" domain
local-part = dot-atom / quoted-string / obs-local-part
https://tools.ietf.org/html/rfc2822#section-3.4
atext = ALPHA / DIGIT / ; Any character except controls, "!" / "#" / ; SP, and specials. "$" / "%" / ; Used for atoms "&" / "'" / " * " / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
atom = [CFWS] 1 * atext [CFWS]
dot-atom = [CFWS] dot-atom-text [CFWS]
dot-atom-text = 1 * atext * ("." 1 * atext)
...
addr-spec = local-part "@" domain
local-part = dot-atom / quoted-string / obs-local-part