Sugar CRM CE 6.5 Контактная форма. Как изменить проверку поля электронной почты

Я думаю, что в последнее время в протоколах адресации электронной почты происходят глобальные изменения. Теперь у нас есть новый набор символов, разрешенных в адресах электронной почты.

Например, в Испании у нас есть символ «ñ», и теперь это разрешено в адресе электронной почты, например, mañ[email protected].

У меня проблема с SugarCE (версия 6.5.9) в том, что в поле контактов email1 есть валидация, которая не позволяет сохранить этот символ и при сохранении формы выдает ошибку "invalid value".

Кто-нибудь знает, где в исходном коде находится эта функция проверки, чтобы я мог ее изменить?

Спасибо!

--Обновить--

нашел что-то о проверке, как сказал Чед в include/SugarEmailAddress/SugarEmailAddress.php, но не может проверить мой символ ñ.

Пожалуйста, помогите мне изменить этот код в соответствии с требованиями:

//bug 40068, According to rules in page 6 of apps.ietf.org/rfc/rfc3696.html#sec-3,
//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,})+)\$/";

person Jack Casas    schedule 18.09.2013    source источник
comment
Код проверки, который вы ищете, вероятно, находится в include/SugarEmailAddress/SugarEmailAddress.php — именно здесь находится большая часть тяжелого адреса электронной почты.   -  person Chad Hutchins    schedule 19.09.2013


Ответы (1)


Также есть проверка javascript.

Регулярное выражение PHP определено дважды, что вполне нормально для SugarCRM:

SugarEmailAddress/SugarEmailAddress.php
include/SugarEmailAddress/SugarEmailAddress.php

Я заменил регулярное выражение на это:

var $regex = '/^((?!\s).)*@.*?\.[A-Z]{2,6}$/i';

Что не идеально, но работает достаточно хорошо для меня. Таким образом, мы можем хранить адреса электронной почты как минимум через REST API.

Проверка JavaScript также присутствует в двух местах:

include/javascript/sugar_3.js
jssource/src_files/include/javascript/sugar_3.js

Я заменил оба регулярных выражения на приведенное выше:

OLD 1 : /^\s*[\w.%+\-&'#!\$\*=\?\^_`\{\}~\/]+@([A-Z0-9-]+\.)*[A-Z0-9-]+\.[\w-]{2,}\s*$/i
OLD 2 : /^.*<[A-Z0-9._%+\-&'#!\$\*=\?\^_`\{\}~]+?@([A-Z0-9-]+\.)*[A-Z0-9-]+\.[\w-]{2,}>\s*$/i

Теперь мы можем хранить адреса электронной почты IDN и адреса с символами UTF-8 в локальных частях.

Это не идеальное решение, но оно работает для меня. Может быть, это работает и для вас.

person Alexander Finger    schedule 27.02.2014