The official RFC documents state that we can use both upper and lowercase letters in the "local" part of the domain (plus many other crazy things).
However, what is common in the real world - and what the spec say are two different things. None of those extra characters (! # $ % & ' * / = ? ^ { | } ~
) are allowed in emails from large providers like yahoo, google, or hotmail. In addition, it is very, very rare to see an email that contains capital letters ([email protected]).
I sent myself a couple emails today using different upper and lowercase combos and found that my email servers all treated them as the same account ignoring the fact that the letter casing was different. In other words, [email protected] = [email protected] to my email servers (including my free email accounts).
Should I act on the format the world has chosen - and standardize/lowercase all ANSII emails? Or should I allow users to register multiple accounts as [email protected], [email protected], and [email protected]?
Probably, the correct compromise is to let them register with the capitalization of their choice, and show that where appropriate ("[email protected] Inbox"). But you should canonicalize the capitalization for uniqueness checks, since there are many badly behaved email senders that e.g. capitalize the entire email address before sending.