¿La directiva AngularJs ofrece sugerencias para correos electrónicos mal escritos?

Estoy tratando de reducir las tasas de rebote de los correos electrónicos enviados desde el sitio web que estoy creando. Después de ver la lista de usuarios registrados, he notado que, con frecuencia, las personas escriben incorrectamente el dominio en el correo electrónico, como usuario@gmai.com o usuario@gmail.con

Aparte de vincular de alguna manera la búsqueda MX y los AngularJs, ¿cuáles son mis opciones para verificar que la dirección de correo electrónico es correcta antes de perder un rebote?

He encontrado Mailcheck.js en Github que hace exactamente lo que quiero al proporcionar una sugerencia como “¿Quiso decir usuario@gmail.com ?”

Sin embargo, la biblioteca es para Javascript / jQuery. Necesitaba el envoltorio de AngularJs, así que modifiqué ligeramente la comprobación de ángulo aquí.

(function () { 'use strict'; /** * @ngdoc directive * @name mailcheck.directive:mailcheck * @description * Angular wrapper for Mailcheck.js */ function mailcheckDirective($compile, $sce) { return { restrict: 'A', replace: false, link: function (scope, el, attrs) { //Mailcheck.defaultDomains.push('yandex.ru', 'rambler.ru', 'bk.ru', 'ukr.net', 'list.ru', 'inbox.ru', 'yandex.ua', 'ya.ru', 'i.ua', 'inbox.lv', 'mail.ua', 'yandex.com', 'abv.bg', 'icloud.com', 'meta.ua', 'tut.by', 'rediffmail.com'); Mailcheck.defaultTopLevelDomains.push('com.id', 'com.ph', 'com.br', 'com.vn', 'com.in'); // Limit to input element of specific types var inputTypes = /text|email/i; if (el[0].nodeName !== 'INPUT') { throw new Error('angular-mailcheck is limited to input elements'); } if (!inputTypes.test(attrs.type)) { throw new Error('Invalid input type for angular-mailcheck: ' + attrs.type); } scope.suggestion = false; scope.bugmenot = false; // Compiled template if (attrs.mailcheck !== "notemplate") { var template = $compile('
Did you mean ? Nope.
')(scope); el.after(template); } el.bind('input', function () { scope.suggestion = false; }) .bind('blur', function () { el.mailcheck({ suggested: function (element, suggestion) { scope.suggestion = suggestion.full; scope.$apply(); }, empty: function (element) { scope.suggestion = false; } }); }); scope.useSuggestion = function () { el.val(scope.suggestion); scope.suggestion = false; }; } }; } angular .module('angular-mailcheck', []) .directive('mailcheck', mailcheckDirective); mailcheckDirective.$inject = ['$compile', '$sce']; })();

Una vez que la directiva es parte de la solución, se puede usar así en HTML:

   Did you mean ? Nope.  

Si no necesita personalizar el locking de mailcheck en HTML, puede usar el mailcheck="" lugar de mailcheck="notemplate" .