我用C#制作了一个邮件群发系统,但其中不能验证地址的正确性和是否存在,求高手帮助,最好能帮我详细解答
4个回答
展开全部
地址正确性要根据你的需求来确定究竟什么样的是符合规则的邮件地址,一般的地址并没有特别的要求,@之前可以包含“-”、“_”、“.”这三个特殊字符,但不能全为特殊字符,也不能以特殊字符开始或结束,@之后为域名一般都是字母和“.”组合,同样不能以“.”开始或结束。那么大体上的规则就变成如下正则:
“^[a-zA-Z0-9]+?([-_\.][a-zA-Z0-9]+?)*?@[a-zA-Z]+?(\.[a-zA-Z]+?)*$”
意思是地址可以以字母或数字开头,后面如果包含特殊字符,则在后面一定包含字母或数字,如果不包含特殊字符,则全为字母或数字。域名可以以字母开头,后面如果包含“.”,则在后面必须还有字母。例如“abc@abc”、“ab2_ds4.dd@abc.com.cn”这些都是符合的。
邮件地址的验证只能用正则来判断,否则会使代码很难理解。
至于是否存在的检查,一般都没有这种功能,我所知道的所有邮件客户端都没有这个功能,除非你能连接到域名服务器的数据库,去查询地址是否存在,否则没有办法验证这个。
“^[a-zA-Z0-9]+?([-_\.][a-zA-Z0-9]+?)*?@[a-zA-Z]+?(\.[a-zA-Z]+?)*$”
意思是地址可以以字母或数字开头,后面如果包含特殊字符,则在后面一定包含字母或数字,如果不包含特殊字符,则全为字母或数字。域名可以以字母开头,后面如果包含“.”,则在后面必须还有字母。例如“abc@abc”、“ab2_ds4.dd@abc.com.cn”这些都是符合的。
邮件地址的验证只能用正则来判断,否则会使代码很难理解。
至于是否存在的检查,一般都没有这种功能,我所知道的所有邮件客户端都没有这个功能,除非你能连接到域名服务器的数据库,去查询地址是否存在,否则没有办法验证这个。
追问
那有没有方法能验证域名是否存在的啊
追答
这个我觉得也没有必要,你是群发,只要做好发送就行了,把邮件发出去,没有的系统自然会退回来,不需要你去考虑这么多。你可以看看Outlook,foxmail这些邮件客户端,会验证地址是否正确的,只是在你建立帐号时会有个测试的选项,点那里也就是发个邮件收个邮件,发出去就是对了,收到就是对了,反之就是错了。
你总不能为了检查邮件地址是否合法,而向每个地址都发一封邮件吧?这不成垃圾邮件了么!只要地址格式合法就行了,你想太多了!
还有,上面的正则是我临时想的,不一定完全包含所有邮件地址,你可以百度搜“电子邮件验证正则表达式”,自己挑一个喜欢的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询