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 (JohnDoe@example.com).
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, JohnDoe@example.com = johndoe@example.com 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 JohnDoe@example.com, johndoe@example.com, and JOHNdoe@example.com?