Validar la "–" en direcciones de correo electr—nico e-mail. Ej. –ombre@loquesea.com

  • 1
  • Question
  • Updated 7 years ago
Parece que recientemente se ha empezado a admitir el caracter '–' en las direcciones e-mail. Por ejemplo ahora mi cuenta de correo puede ser ma–oso@ejemplo.com

Cuando meto esto como correo electr—nico de un contacto me salta un error de validaci—n que dice: 'Valor no v‡lido: Direcci—n de Email'

He estado buscando en el c—digo y he encontrado una parte de validaci—n en include/SugarEmailAddress/SugarEmailAddress.php

Hay una parte que pone: [PHP]//bug 40068, According to rules in page 6 of http://www.apps.ietf.org/rfc/rfc3696....,

//allowed special characters ! # $ % & ' * + - / = ? ^ _ ` . { | } ~ in local part

var $regex = '/^(?:['\.\-\+!\$\*=\?\^_`\{\}~\/\w]+)@(?:(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|\w+(?:[\.-]*\w+)*(?:\.[\w-]{2,})+)\$/';[/PHP]

Sin embargo, no he conseguido modificarlo para que admita la –. ÀAlguien me puede ayudar con esto?

Gracias! :rolleyes:

(from delaghetto)
Photo of Emma at Get Satisfaction

Emma at Get Satisfaction

  • 1632 Posts
  • 0 Reply Likes

Posted 7 years ago

  • 1
Photo of Emma at Get Satisfaction

Emma at Get Satisfaction

  • 1632 Posts
  • 0 Reply Likes
Bueno, al final he conseguido solucionarlo.

Por si alguien lo necesita (no es si esta es la mejor manera de hacerlo) la soluci—n consiste en 2 partes, ya que la direcci—n de email se valida 2 veces:

Primero mediante una funci—n javascript al pulsar el bot—n Guardar en el formulario. Esta funci—n est‡ en include\javascript\sugar_3.js funci—n: function isValidEmail(emailStr)

La parte que dice:

[CODE]
if(!/^\s*[\w.%+\-&'#!\$\*=\?\^_`\{\}~\/]+@([A-Z0-9-]+\.)*[A-Z0-9-]+\.[\w-]{2,}\s*$/i.test(emailAddress)&&!/^.*\s*$/i.test(emailAddress))
{
return false;
}
[/CODE]

Hay que a–adir las –

[CODE]
if(!/^\s*[\w–.%+\-&'#!\$\*=\?\^_`\{\}~\/]+@([A-Z0-9-]+\.)*[A-Z0-9-]+\.[\w–-]{2,}\s*$/i.test(emailAddress)&&!/^.*\s*$/i.test(emailAddress))
{
return false;
}
[/CODE]

Segundo, hay otra validaci—n cuando va a guardar el registro en la base de datos. En el fichero /include/SugarEmailAddress/SugarEmailAddress.php

Donde pone

[PHP]
var $regex = '/^(?:['\.\-\+!\$\*=\?\^_`\{\}~\/\w]+)@(?:(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|\w+(?:[\.-]*\w+)*(?:\.[\w-]{2,})+)\$/';
[/PHP]

Hay que a–adir la – tambiŽn:

[PHP]$regex = '/^(?:['\.\-\+!\$\*=\?\^_`\{\}~\/\w–]+)@(?:(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|[\w–]+(?:[\.-]*[\w–]+)*(?:\.[\w–-]{2,})+)\$/';[/PHP]

Una vez hecho esto, hay que ir a en el propio Sugar CRM a Admin - Reparaci—n - Reparaci—n y Reconstrucci—n R‡pida. Concretamente, la funci—n actualizada va a estar en el fichero /cache/include/javascript/sugar_grp1.js, que se genera autom‡ticamente.

(from delaghetto)