糖 CRM CE 6.5 联系人表格.如何修改电子邮件字段验证



我认为最近电子邮件寻址协议发生了一些全球性的变化。现在,我们在电子邮件地址中允许使用一组新字符。

例如,在

西班牙,我们有字符"ñ",现在允许在电子邮件地址中使用,例如 mañoso@example.com

我对 SugarCE(版本 6.5.9)的问题是联系人 email1 字段中有一个验证,不允许存储此字符,并且在保存表单时会给出"无效值"错误。

有谁知道这个验证函数在源代码中的位置,以便我可以修改它?

谢谢!

--更新--

找到了一些关于验证的东西,就像乍得在包含/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,})+)$/";

还有一个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 字符的地址。

这不是一个完美的解决方案,但它对我有用。也许它也对你有用。

最新更新