【发布时间】:2012-09-12 05:26:42
【问题描述】:
我们正在使用以下验证代码来检查由 Lotus Notes 驱动的 Web 表单上的有效电子邮件地址格式:
@If((@ValidateInternetAddress([Address821]; @ThisValue)!=""
| @Contains(@ThisValue; "\"") | @Contains(@ThisValue; "'")
| @Contains(@ThisValue; " ")); "Please include a valid email address."; "");
目前,如果用户输入以下任何输入,验证会抛出错误消息:
- 空字段
- " "、' 或 / 字符
- 电子邮件的域部分:“test.com”
- 仅限@
然而,如果用户输入 test@test,表单会验证这是一个有效的电子邮件地址格式。
这种格式是否被认为是有效的“Address821”格式?还是该表单将错误的格式验证为有效的电子邮件地址?
【问题讨论】:
-
我只测试了@ValidateInternetAddress 函数,你是对的,“test@example”确实返回了一个空字符串,它表示一个有效的地址。我查看了tools.ietf.org/html/rfc821,但找不到任何地址格式规范。我假设理论上可能存在使用该格式的有效地址。 RFC 821 已被 RFC 2821 取代,但我认为 Notes 公式语言没有更新。
-
我会使用 Javascript 正则表达式来检查地址,将其放在字段的 onBlur 事件上(正如您所说,这是一个 Web 应用程序)。即使 regexp 也不是 100% 可靠的,那里有一些非常不寻常的地址,但您应该能够涵盖大多数情况。
-
很遗憾,我们无法将 js 引入这种遗留形式。
-
这似乎是@ValidateInternetAddress 公式的问题。请参阅:www-10.lotus.com/ldd/nd6forum.nsf/… 和 lekkimworld.com/2007/06/20/…
-
我想那是一个错误。我不认为你可以期望它得到修复,但提交 PMR 可能不会对你造成伤害。为什么不能引入Javascript?特别是正如您所说,这是一个网络表单。只需将代码添加到 onBlur 并在地址无效时向用户显示一条消息。与您尝试使用@Formula 所做的没有什么不同,只是另一种语言......
标签: email lotus-notes email-validation lotus-formula rfc822