登录
首页 >  Golang >  Go问答

解析包含姓名的完整电子邮件地址

来源:stackoverflow

时间:2024-03-05 15:18:19 187浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《解析包含姓名的完整电子邮件地址》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我需要从电子邮件地址获取域名,问题是同一电子邮件包含名称 name < 电子邮件 >, 我当前的代码是:

var (
    ErrBadFormat        = errors.New("invalid format")
    emailRegexp = 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 GetFromDomain(email string) string {
    if !emailRegexp.MatchString(email) {
        fmt.Println("Error %FROMDOMAIN ", email)
        return "localhost"
    }

    i := strings.LastIndexByte(email, '@')
    return email[i+1:]
}

执行此操作的最佳做​​法是什么?当电子邮件包含名称时,我使用 lastindexbyte 的方法返回错误。我该如何解决这个问题?


解决方案


最好的选择是使用正确的电子邮件解析库,例如标准库的 mail.ParseAddress 方法。

从那里,您可以通过分割 @ 轻松地从地址中提取域名 - 但要小心!在电子邮件地址的用户名部分中使用引号或转义的 @ 实际上是合法的(即 "foo@bar"@example.com),因此您必须拆分最后 @

本篇关于《解析包含姓名的完整电子邮件地址》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>