我认为最近一些全球变化已经发生在电子邮件寻址协议上。现在,我们在电子邮件地址中允许使用一组新字符。
例如在西班牙,我们有字符“ñ”,现在可以在电子邮件地址中使用,例如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,})+)\$/";
答案 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字符的地址。
这不是一个完美的解决方案,但它对我有用。也许它对你也有用。