Cómo configurar el filtro de direcciones válidas de correos electrónicos
Acabo de leer esta pregunta de un usuario en un foro de DotNetNuke:
Deseo impedir que mis usuarios utilicen direcciones de correo electrónico de servicios públicos como Yahoo o Hotmail para registrarse en mi sitio. ¿Es eso posible? ¿Se puede mostrar un mensaje de error aclarando que este tipo de direcciones de correo electrónico no están permitidas?
Sí, es posible. Debes configurarlo así:
1. Corrige la Expresión Regular que valida las direcciones de correo electrónico ingresadas por los usuarios al registrarse:
Este parámetro se encuentra en la página de Configuraciones de Usuario, a la que se llega mediante el menú Admin - Cuentas de Usuario y luego abajo a la derecha, el vínculo Configuraciones de Usuario.
El parámetro se llama Validación de Dirección de Correo Electrónico y es el cuarto antes del final de la página. Contiene la siguiente expresión regular:
\b[a-zA-Z0-9._%\-+']+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,4}\b
Si lo que deseas es no permitir dominios como 'yahoo', 'hotmail' o 'gmail' luego del caracter arroba, debes agregar la siguiente subexpresión allí:
(?i)(?!yahoo|hotmail|gmail)
...la expresión regular finalmente queda como sigue:
\b[a-zA-Z0-9._%\-+']+@(?i)(?!yahoo|hotmail|gmail)[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,4}\b
(haz clic en 'Actualizar' ;-)
2. Modifica los mensajes vinculados con el ingreso de la dirección de correo electrónico:
Es importante que le aclares a tu usuario qué tipo de dirección vas a permitirle ingresar y, cuando cometa un error, debes explicarle que intentó ingresar una de esas direcciones que no deseas que ingrese. En caso de que tu paquete de idiomas pertenezca a España (es-ES), los mensajes están en:
- Directorio: admin\Users\App_LocalResources
- Archivo: User.ascx.es-ES.resx
Dentro de ese archivo busca los siguientes recursos de texto y modifica sus valores, agregando lo que está en itálica y negrita.
- Nombre del Recurso: 'Valor y agregado'
- UserInfo_Email.Text: 'Dirección de correo electrónico: <br>(No pongas una dirección de servidor público)'
- UserInfo_Email.Help: 'Ingresa una dirección de correo electrónico válida. Por favor, no utilices direcciones de servicios públicos de correo electrónico, como Yahoo, Hotmail o Gmail.'
- UserInfo_Email.Validation: 'Debes ingresar una dirección de correo electrónico válida. <br>Nada de Yahoos, Hotmails ni Gmails, ¿ok?'
Eso es todo, ¡a probarlo!