文章插图
在用户提交邮箱地址以后我们需要验证用户邮箱地址是否合法,解决方案的范围很广,可以通过使用正则表达式来检查电子邮件地址的格式是否正确,甚至可以通过尝试与远程服务器进行交互来解决问题 。两者之间也有一些中间立场,例如检查顶级域是否具有有效的MX记录以及检测临时电子邮件地址 。
一种确定的方法是向该地址发送电子邮件,并让用户单击链接进行确认 。但是在发送文章之前我们需要对用户的邮箱进行预定义检测 。
简单版本:正则表达式基于W3C的正则表达式,此代码检查电子邮件地址的结构 。
package mainimport ("fmt""regexp")var emailRegex = regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")func main() {// Valid examplee := "test@golangcode.com"if isEmailValid(e) {fmt.Println(e + " is a valid email")}// Invalid exampleif !isEmailValid("just text") {fmt.Println("not a valid email")}}// isEmailValid checks if the email provided passes the required structure and length.func isEmailValid(e string) bool {if len(e) < 3 && len(e) > 254 {return false}return emailRegex.MatchString(e)}稍微更好的解决方案:Regex + MX查找在此示例中,我们结合了对电子邮件地址进行正则表达式检查的快速速度和更可靠的MX记录查找 。这意味着,如果电子邮件的域部分不存在,或者该域不接受电子邮件,它将被标记为无效 。
作为net软件包的一部分,我们可以使用LookupMX为我们做额外的查找 。
package mainimport ("fmt""net""regexp""strings")var emailRegex = regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")func main() {// Made-up domainif e := "test@golangcode-example.com"; !isEmailValid(e) {fmt.Println(e + " is not a valid email")}// Real domainif e := "test@google.com"; !isEmailValid(e) {fmt.Println(e + " not a valid email")}}// isEmailValid checks if the email provided passes the required structure// and length test. It also checks the domain has a valid MX record.func isEmailValid(e string) bool {if len(e) < 3 && len(e) > 254 {return false}if !emailRegex.MatchString(e) {return false}parts := strings.Split(e, "@")mx, err := net.LookupMX(parts[1])if err != nil || len(mx) == 0 {return false}return true}
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- outlook邮箱服务器设置 outlook无法登陆服务器
- 免费注册企业邮箱 网易企业免费邮箱登陆
- 网易免费邮箱注册条件 网易邮箱注册失败是怎么回事
- 办理手机号卡应注意什么 办理手机卡要注意什么
- 手机号更换8元保号套餐,取消最低消费,亲测成功 联通怎么改8元最低消费套餐
- Foxmail7.2邮箱如何转移备份邮件 foxmail邮件导出备份
- 阿里云企业邮箱收费标准 云企业邮箱是什么
- 农行信用卡如何修改预留的手机号码? 怎么样修改银行卡预留手机号码
- 怎么通过手机号码找到对方的位置? 怎么用手机号查一个人的位置
- 怎么申请开通注册邮箱账号? 如何创建自己的电子邮件