I was hoping that this did something a bit more worthy of Hacker News, like checking if the A Record exists. Or perhaps speaking SMTP to the domain in question to query if the user actually exists (works on some domains) using web sockets.
Strictly, you might need to check for both. If there are no MX records, mail will be delivered to the @ A record for a domain (e.g. mail to x@example.com will go to the IP for 'example.com').
So if there are no MX records, you need to check @'s A record as well (or vice versa, since not all domains have A records either).
Thanks for the excellent write up, Andrew. Glad to see that Mailcheck's working well for you! I'll post up your post on our Github readme in a bit.
As a side note, I'll be releasing version 1.1 shortly, which has a bunch of improvements, including the option to use keyboard-distance based string matching. Look out for it!
Why is this better than having users enter their email twice and just confirming they match?
I realize entering email twice might be slightly sub-optimal from a user perspective but if you as a user want a service, it seems like entering one's email twice is not a lot to ask or a major source of friction. Or is it?
Not trolling. Genuine question. We do the type your email address twice on our site so wanted to understand if there any clear benefits of this approach.
I see what you're saying about the customer wanting the service but a lot of time it's not so simple. We spend a ton of time tweaking our copy and graphics to convince the customer, if only just barely, that they should sign up. When they finally decide to sign up, the fewer the forms the better. There have been studies that show a marked reduction in performance for each new field you request from the customer. This has lead to people asking for a password only once, instead of the traditional twice, or to go further and not even ask for a password (it's automatically created and emailed to them).
Additionally, as developers, we should be making things easier for customers. Correcting obvious typos is a better system than asking all customers to type it twice. Consider the extra work you're creating for all the customers who didnt have a typo.
One of my accounts uses a relatively long domain, so I often type it once, Ctrl-A Ctrl-C to copy it, then paste into the dupe field. Assuming I'm not the only person that does this, entering it twice isn't going to help in any significant way.
And secondly, there's a fair UI improvement in 'your email might be wrong, and here are some easy 1-click suggestions to fix it' vs 'these 2 things don't match. Work out where the error is, and then fix it', usually without even indicating the non-matching substring(s).
Many people really struggle to type on a keyboard - it's something that geeks often forget (I've been reminded of this again this week when helping my mum setup her new laptop). For them, having to enter their email address twice isn't suboptimal - it's a nightmare.
Those of us who don't have a problem with keyboards don't bother typing twice. We Ctrl-A, Ctrl-C, Tab, Ctrl-V, which renders the whole thing pointless.
The e-mail address is more important than other fields both because it can be used to verify identity and because it allows a website to send marketing e-mails (which is often the purpose of getting people to sign up.)
Then again, you can do a lot of mistakes when typing your shipping address and it will still get through. It is also easier to spot mistakes since a shipping address contain regular words which isn't as common with email addresses.
One char wrong and your email is completely worthless, and with it your only real link with the service is cut off - often with no way of fixing it.
Can you expand on why you feel double entry is a bad solution? I agree having to re-enter data isn't preferable, but it seems that a solution like this isn't perfect either; the user can still enter their address incorrectly quite easily without it being caught. It seems like double entry would catch more mistakes than this (not to dismiss this in any way as I really like it).
* Every field you add to a form reduces the number of people who complete it -- as it gets longer, more people will go "ugh, big form, not worth it" and click away the moment they see it.
* Autocomplete usually provides my email address for me, so asking twice is pointless; when it doesn't, I usually copy-and-paste from one email box to the other, and I'm not alone in doing so (see elsewhere in these comments).
* "These email addresses don't match" leaves the user to play hunt-the-typo hirself, while the submission's approach points hir straight at the (possible) error. I guess you could highlight the differences with the double-entry approach too, but suggesting plausible corrections remains easier for the user.
I agree that this is not a perfect solution - mistakes are still very possible and in some cases double entry may be the best option. That being said, this is still a good way to catch some of the most common typo cases!
It'd probably be quite a barrier to signup, although I guess a 'mailto:register@example.com?subject=signup-for-$uniqid' link might solve some of the hassle.
The major issue I can see with it is that many people might like to use a email alias to signup (I prefer to use shabble+servicename@ for services which aren't too broken to accept a +) which isn't the same as their configured sender.
http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-...
Maybe I'll build it for fun.