According to RFC 2822, the local-part of the address may use any of these ASCII characters: * Uppercase and lowercase letters (case sensitive) * The digits 0 through 9 * The characters ! # $ % * / ? | ^ { } ` ~ & ' + - = _ * The character . provided that it is not the first or last character in the local-part. Additionally, RFC 2821 and RFC 2822 allow the local-part to be a quoted-string, as in "John Doe"@example.com, thus allowing characters in the local-part that would otherwise be prohibited. However, RFC 2821 warns: "a host that expects to receive mail SHOULD avoid defining mailboxes where the Local-part requires (or uses) the Quoted-string form". Notwithstanding the addresses permitted by these standards, some systems impose more restrictions on email addresses, both in email addresses created on the system and in email addresses to which messages can be sent. Hotmail, for example, only allows creation of email addresses using alphanumerics, dot (.), underscore (_) and hyphen (-), and will not allow sending mail to any email address containing ! # $ % * / ? | ^ { } ` ~.[1] The domain name is much more restricted. The dot separated domain labels are limited to "letters, digits, and hyphens drawn from the ASCII character set ... Mailbox domains are not case sensitive." The informational RFC 3696 written by the author of RFC 2821 explains the details in a readable way, with a few minor errors noted in the 3696 errata. Valid examples : Abc@example.com Abc.123@example.com user+mailbox/department=shipping@example.com !#$%&'*+-/=?^_`.{|}~@example.com "Abc@def"@example.com "Fred Bloggs"@example.com "Joe.\\Blow"@example.com Invalid examples : Abc.example.com (char @ is missing) Abc.@example.com (last char of local part is a dot(.)) Abc..123@example.com (char dot(.) is double) |