To improve the experience on the user side of things, you could try mailcheck. It catches common typos in emails and adds a link to correct them next to the field, like that:
No, no, no, no. Normal people don’t always use the email field properly. The might put the username in the email field and the email in the username. Just check for an @. There is no email in the world outside your server that you can sent to without an @.
I did that for a time (which I mention in the article), but it’s still a superfluous check on top of an activation email. If your users are typing the wrong values into your registration form, perhaps you need better labeling or placeholder text? Display an error that the activation email couldn’t be sent. But why add superfluous checks?
Because it’s a lot easier to validate a form than write code that 1. catches bounce emails 2. sorts out which are invalid emails and which are transient problems 3. flags the user so they don’t generate more bounces 4. prompts them to re-enter their email address until they do.
Unless you just delete users who haven’t activated their account by email within a time span that works for your app.
Provided you don’t care about losing users who think “wow, this service sucks, they can’t even send an email.” Forcing people to leave your site before they can come back means some of them won’t come back. Somewhere, somebody probably even has stats to confirm that.
That’s likely possible, except you can have the same problem with the server side validation. What his article suggested and we both agree on is a client side warning.
Don’t try to over validate an email.