Разобрать полный адрес электронной почты, имя - PullRequest
0 голосов
/ 14 сентября 2018

Мне нужно получить домен с адреса электронной почты, проблема в том же адресе электронной почты, в котором есть имя name < email >, мой текущий код:

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 возвращает ошибку, когда электронное письмо содержит имя. Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 14 сентября 2018

Лучше всего использовать правильную библиотеку для разбора электронной почты, такую ​​как метод mail.ParseAddress стандартной библиотеки.

Оттуда вы можете легко извлечь доменное имя из адреса, разделив на @ - но будьте осторожны! На самом деле законно иметь кавычки или экранирование @ в части имени пользователя электронного адреса (т.е. "foo@bar"@example.com), поэтому вы должны разделить на последний @.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...