Sugar CRM CE 6.5联系表。如何修改电子邮件字段验证

时间:2013-09-18 13:04:55

标签: sugarcrm

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

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

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

有谁知道源代码中的哪个是验证函数,所以我可以修改它?

谢谢!

- 更新 -

发现了一些关于验证的内容,例如Chad在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,})+)\$/";

1 个答案:

答案 0 :(得分:0)

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

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