If a friend says to you “this is my email address” then there's no point saying to her “Ah, but it violates RFC 5321”. Her ISP has given her that address and it works and she's committed to it.
If you've got an online business that she wants to register for, she will enter her email address into the registration page.
We take this to mean that all messages you send out should conform carefully to the accepted standards.Messages you receive should be interpreted as the sender intended so long as the meaning is clear. Getting it right is hard because the RFCs that define the conventions are trying to serve many masters and they document conventions that grew up in the early wild west days of email. There's free code out there in many languages that will do this better than anybody's first attempt. If you do try to write validation code yourself then you should at least test it.There's only one real answer to this: a valid email address is one that you can send emails to.There are acknowledged standards for what constitutes a valid email address.
This is a very valuable principle that allows networked software written by different people at different times to work together. Even if you're adopting somebody else's validator you should test it.If we are picky about the standards conformance of other people's work then we will lose useful functions and services. To do this you're going to have to write a series of unit tests that explore all the nooks and crannies of what is allowed by the RFCs. You don't have to do that because I've done it for you.