Некоторые почтовые провайдеры считают несколько разных на вид адресов одним и тем же ящиком. Точка в адресе Gmail для Gmail не видна; дефис в адресе Яндекса для Яндекса — тот же символ, что и точка. CleanContact приводит каждый присланный адрес к единой канонической форме и возвращает её в поле normalized рядом с адресом, который был отправлен.
Что делает нормализация
- Приводит весь адрес к нижнему регистру.
- Заменяет известные алиасы доменов на канонический домен — например, googlemail.com становится gmail.com.
- Для адреса gmail.com (после замены алиаса) убирает из локальной части все точки.
- Для адреса yandex.ru (после замены алиаса) превращает каждый дефис в локальной части в точку.
Для всех остальных доменов нормализация только приводит адрес к нижнему регистру — локальная часть остаётся ровно такой, какой была отправлена. Поле присутствует в ответе всегда, даже если ничего не изменилось: для адреса, который уже был в канонической форме, normalized просто совпадает с адресом в нижнем регистре.
Пример
Адрес Gmail, набранный через алиас домена и с точками:
curl -H "X-API-Key: <ваш-ключ>" \
"https://api.cleancontact.ru/validate?email=J.Ohn.Doe@GoogleMail.com"{
"value": "J.Ohn.Doe@GoogleMail.com",
"normalized": "johndoe@gmail.com",
"result": {
"status": "Good",
"detail": "Mailbox accepts mail"
}
}googlemail.com был заменён на gmail.com, и только после этого из локальной части убрали точки — порядок важен, так как правило про точки применяется к каноническому домену, а не к тому, что был введён. Адрес Яндекса ведёт себя так же, только с дефисами:
curl -H "X-API-Key: <ваш-ключ>" \
"https://api.cleancontact.ru/validate?email=Ivan-Petrov@Yandex.ru"{
"value": "Ivan-Petrov@Yandex.ru",
"normalized": "ivan.petrov@yandex.ru",
"result": {
"status": "Good",
"detail": "Mailbox accepts mail"
}
}Что это даёт
- Дедуплицируйте список по канонической форме, а не по сырой строке — j.ohn.doe@gmail.com и johndoe@gmail.com это один и тот же контакт, и именно normalized позволяет это увидеть.
- Храните одну запись на адрес — используйте normalized в качестве ключа в базе вместо адреса, который пользователь случайно набрал, и повторные регистрации с одного адреса перестанут выглядеть новыми контактами.
- Настраивать нечего — нормализация выполняется для каждого запроса по каждому ключу API без дополнительных затрат.
Нормализация — отдельный шаг от сигнала Gmail dot trick: normalized показывает каноническую форму адреса, который перед вами прямо сейчас, а gmailDotTrick — сообщает, встречались ли раньше несколько разных написаний этого же адреса.