1. Стандартный валидатор HTML5 адрес email@domain считает валидным, но в 99,99% случаев - такого адреса не существует. Технически использование такой почты возможно, но на практике чаще всего это ошибка пользователя.
2. Чтобы отсечь почту в п.№1, можно написать свой паттерн, который будет требовать наличие домена второго уровня после @. Но и тут есть шанс получить несуществующий домен, например email@some-domain.com
3. Чтобы наверняка получать существующий домен, можно взять список наиболее популярных почтовых сервисов и проверять еще на соответствие таким образом. Минус самый очевидный - пользователь с малоизвестным почтовиком рискует не получить аккаунт, а захочет ли он делать почту на гмейле/яндексе - большой вопрос.
Какой вариант наиболее приемлемый в 2018? Лично мне - №1, тестировщики требуют - №2, №3 - видел на некоторых сайтах.
на мой взгляд, лучший способ проверить email на валидность - это проверить на наличие собаки и отправить ему письмо
в остальных случаях игра не стоит свеч