Allowed Characters in email address

http://stackoverflow.com/questions/2049502/what-characters-are-allowed-in-email-address


See RFC 5322 and, to a lesser extent, RFC 5321.
RFC 822 also covers email addresses, but it deals mostly with its structure:
 addr-spec   =  local-part "@" domain        ; global address     
local-part = word *("." word) ; uninterpreted
; case-preserved

domain = sub-domain *("." sub-domain)
sub-domain = domain-ref / domain-literal
domain-ref = atom ; symbolic reference
And as usual, Wikipedia has a decent article on email addresses:
The local-part of the e-mail address may use any of these ASCII characters:
  • Uppercase and lowercase English letters (a-z, A-Z)
  • Digits 0 to 9
  • Characters ! # $ % & ' * + - / = ? ^ _ ` { | } ~
  • Character . (dot, period, full stop) provided that it is not the first or last character, and provided also that it does not appear two or more times consecutively.
For validation, see this.
The domain part is defined as follows:
The Internet standards (Request for Comments) for protocols mandate that component hostname labels may contain only the ASCII letters a through z (in a case-insensitive manner), the digits 0through 9, and the hyphen (-). The original specification of hostnames in RFC 952, mandated that labels could not start with a digit or with a hyphen, and must not end with a hyphen. However, a subsequent specification (RFC 1123) permitted hostname labels to start with digits. No other symbols, punctuation characters, or blank spaces are permitted.