PHPackages                             nazarpunk/email-address - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. nazarpunk/email-address

ActiveLibrary

nazarpunk/email-address
=======================

Email address parse and sanitize.

1.0.6(2y ago)014MITPHPPHP &gt;=8.1.2

Since Aug 15Pushed 2y ago1 watchersCompare

[ Source](https://github.com/nazarpunk/php-email-address)[ Packagist](https://packagist.org/packages/nazarpunk/email-address)[ RSS](/packages/nazarpunk-email-address/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (5)Used By (0)

Многие разработчики испытывают трудности с валидацией [email](https://en.wikipedia.org/wiki/Comparison_of_webmail_providers). Одни просто используют [RegExp](http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html), другие [отказываются](https://habr.com/ru/articles/175375) от проверок, третьи рисуют [таблицы](https://developer.roman.grinyov.name/blog/92).

Немного философии
=================

[](#немного-философии)

Электронная почта прошла большой путь, который оставил на ней свои следы. Но зачастую, поддерживать весь функционал электронных адресов не требуется. В большинстве своём, пользователи пользуются почтовыми сервисами. Посему здравой идеей будет плясать от них.

Поэтому проверка будет очень проста:

- очищаем строку от пробело
- разбиваем по @ на две части
- по доменной части проверяем оставшуюся строку
- если поставщик не найдек, поступаем по вкусу

Что может пойти не так?
=======================

[](#что-может-пойти-не-так)

Точка
-----

[](#точка)

У некоторых почтовых сервисов, есть интересная особенность - не значащие точки. Тобишь `example@gmail.com` и `e.x.a.m.p.l.e@gmail.com` это один и тот же адрес. Соотвественно, если пользователь зарегестрирует несколько аккаунтов, а потом решить привязать `oauth`, то может быть очень весело.

Плюс
----

[](#плюс)

У некоторых почтовых сервисов, есть интересная особенность - игнорировать всё после знака `+`. Тобишь `example@gmail.com` и `example+spam@gmail.com` это один и тот же адрес. Соотвественно, если пользователь зарегестрирует несколько аккаунтов, а потом решить привязать `oauth`, то может быть очень весело.

Домены
------

[](#домены)

Некоторые почтовые сервисы, игрнорирую разницу в доменах. Тобишь `example@gmail.com` и `example@googlemail.com` это один и тот же адрес. Соотвественно, если пользователь зарегестрирует несколько аккаунтов, а потом решить привязать `oauth`, то может быть очень весело.

Очень умные пользователи
------------------------

[](#очень-умные-пользователи)

Поднять свой сервер или использовать одноразовые почтовики не составляет большого труда. Посему неизбежно возникнут проблемы с полностью валидными адресами такого формата.

```
"very.(),:;[]\".VERY.\"very@\\ \"very\".unusual"@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]

```

Но эта проблема выходит за рамки данной статьи, так что продолжим.

Формат адреса
=============

[](#формат-адреса)

Отбросив домен, у нас осталась пользовательская часть, которую нужно проверить исходя из допустимого формата самих сервисов. Можно пойди двумя путями:

- Собрать максимально свободную регулярку и не мучаться.
- Или, чтоб не слать байты по заведомо не валидному адресу, проверить каждую запрещённую последовательность основываясь на таблице.

Как поступать решать вам, а таблица собственно приведена ниже.

- `min` минимальная длинна
- `max` максимальная длинна
- `chars` допустимые символы
- `first` допустимый первый символ
- `last` допустимый последний символ
- `!.` удалять ли точку при проверке
- `..` разрешена ли последовательность из двух точек
- `._` могут ли символы `.` и `_` находиться рядом
- `.-` \*\* могут ли символы . и - находиться рядом
- `.0` может ли точка соседствовать с цифрой
- `__` разрешена ли последовательность из двух `_`
- `_-` могут ли символы `_` и `-` находиться рядом
- `--` разрешена ли последовательность из двух `-`
- `.+` может ли в строке быть больше одной точки
- `+` игнорировать ли всё, что после знака `+`
- `l` количество не буквенных символов, после которого требуется минимум одна буква
- `t` тестировались ли данные руками

minmaxcharsfirstlast!....\_.-.0\_\_\_---.++ltaol332a-z0-9.\_a-za-z0-9❌❌❌✅❌❌❌✅fastmail132a-z0-9\_a-za-z0-9\_✅✅✅gmx340a-z0-9.\_-a-z0-9a-z0-9❌❌❌❌✅❌❌❌✅❌✅google630a-z0-9.a-z0-9a-z0-9✅❌✅✅✅8✅hey264a-z0-9.a-z0-9a-z0-9❌❌✅✅✅✅hush145a-z0-9.\_-a-z0-9a-z0-9❌❌✅✅✅❌✅❌✅❌❌icloud320a-z0-9.\_a-za-z0-9❌❌✅✅❌✅✅✅lycos132a-z0-9.\_-a-za-z0-9❌❌❌❌❌✅✅❌✅❌❌mail\_com340a-z0-9.\_-a-z0-9a-z0-9❌❌❌❌✅❌❌❌✅❌3✅mail\_ru531a-z0-9.\_-a-z0-9a-z0-9❌❌❌❌✅❌❌❌✅✅✅mailfence440a-z0-9.\_-a-z0-9\_a-z0-9\_-❌❌✅✅✅✅✅✅✅✅✅meta\_ua132a-z0-9.\_-a-za-z0-9❌✅✅✅✅✅✅✅✅❌✅microsoft164a-z0-9.\_-a-za-z0-9\_-❌❌✅✅✅✅✅✅✅✅✅online\_ua132a-z0-9.-a-z0-9a-z0-9❌❌❌✅❌✅❌✅posteo360a-z0-9.\_-a-z0-9a-z0-9\_-❌❌❌❌✅❌❌❌✅✅❌protonmail140a-z0-9.\_-a-z0-9a-z0-9✅❌❌❌✅❌❌❌✅✅✅rambler332a-z0-9.\_-a-z0-9a-z0-9❌❌❌❌✅❌❌❌✅❌✅skiff130a-z0-9.a-z0-9a-z0-9✅❌✅✅✅✅tutanota364a-z0-9.\_-a-z0-9\_a-z0-9\_-❌❌✅✅✅✅✅✅✅✅❌ukr\_net132a-z0-9.\_-a-z0-9\_-a-z0-9\_-❌❌✅✅✅✅✅✅✅✅✅vk531a-z0-9.\_-a-z0-9a-z0-9❌❌❌❌✅❌❌❌✅✅✅yahoo432a-z0-9.\_a-za-z0-9❌❌❌✅❌✅❌✅yandex130a-z0-9.-a-za-z0-9❌❌❌✅❌✅✅✅Домены
======

[](#домены-1)

- `d` привязаны ли все домены к одному аккаунту

daol❌aol.comfastmail❌fastmail.comfastmail.cnfastmail.co.ukfastmail.com.aufastmail.defastmail.esfastmail.fmfastmail.frfastmail.imfastmail.infastmail.jpfastmail.mxfastmail.netfastmail.nlfastmail.orgfastmail.sefastmail.tofastmail.twfastmail.ukfastmail.ussent.comgmx❌gmx.comgmx.usgoogle✅gmail.comgooglemail.comhey❌hey.comhush❌hush.aihush.comhushmail.comhushmail.memac.hush.comicloud❌icloud.comlycos❌lycos.commail\_com❌mail.comemail.comusa.commyself.comconsultant.compost.comeurope.comasia.cominame.comwriteme.comdr.comengineer.comcheerful.comaccountant.comactivist.comadexec.comallergist.comalumni.comalumnidirector.comappraiser.netarchaeologist.comarcticmail.comartlover.comasia.comauctioneer.netbartender.netbikerider.combirdlover.combrew-meister.comcash4u.comchef.netchemist.comclubmember.orgcollector.orgcolumnist.comcomic.comcomputer4u.comconsultant.comcontractor.netcoolsite.netcounsellor.comcyberservices.comdeliveryman.comdiplomats.comdisposable.comdr.comengineer.comexecs.comfastservice.comfinancier.comfireman.netgardener.comgeologist.comgraduate.orggraphic-designer.comgroupmail.comhairdresser.nethomemail.comhot-shot.cominstruction.cominstructor.netinsurer.comjob4u.comjournalist.comlegislator.comlobbyist.comminister.commusician.orgmyself.comnet-shopping.comoptician.comorthodontist.netpediatrician.comphotographer.netphysicist.netplanetmail.complanetmail.netpolitician.compost.compresidency.compriest.comprogrammer.netpublicist.comqualityservice.comradiologist.netrealtyagent.comregisterednurses.comrepairman.comrepresentative.comrescueteam.comsalesperson.netsecretary.netsocialworker.netsociologist.comsolution4u.comsongwriter.netsurgical.netteachers.orgtech-center.comtechie.comtechnologist.comtheplate.comtherapist.nettoothfairy.comtvstar.comumpire.comwebname.comworker.comworkmail.comwriteme.com2trom.comactivist.comaircraftmail.comartlover.combikerider.combirdlover.comblader.comboardermail.combrew-master.combrew-meister.combsdmail.comcatlover.comchef.netclubmember.orgcollector.orgcutey.comdbzmail.comdoglover.comdoramail.comgalaxyhit.comgardener.comgreenmail.nethackermail.comhilarious.comkeromail.comkittymail.comlinuxmail.orglovecat.commarchmail.commusician.orgnonpartisan.competlover.comphotographer.netsnakebite.comsongwriter.nettechie.comtheplate.comtoke.comuymail.comcomputer4u.comconsultant.comcontractor.netcoolsite.netcyberdude.comcybergal.comcyberservices.comcyber-wizard.comengineer.comfastservice.comgraphic-designer.comgroupmail.comhomemail.comhot-shot.comhousemail.comhumanoid.netiname.cominorbit.commail-me.commyself.comnet-shopping.comnull.netphysicist.netplanetmail.complanetmail.netpost.comprogrammer.netqualityservice.comrocketship.comsolution4u.comtech-center.comtechie.comtechnologist.comwebname.comworkmail.comwriteme.comacdcfan.comartlover.comchemist.comdiplomats.comdiscofan.comelvisfan.comexecs.comhiphopfan.comhousemail.comkissfans.commadonnafan.commetalfan.comminister.commusician.orgninfan.comravemail.comreborn.comreggaefan.comsnakebite.comsongwriter.netbellair.netcaliforniamail.comdallasmail.comnycmail.compacific-ocean.compacificwest.comsanfranmail.comusa.comafricamail.comarcticmail.comasia.comasia-mail.comaustraliamail.comberlin.combrazilmail.comchinamail.comdublin.comdutchmail.comenglandmail.comeurope.comeuropemail.comgermanymail.comirelandmail.comisraelmail.comitalymail.comkoreamail.commexicomail.commoscowmail.communich.compolandmail.comsafrica.comsamerica.comscotlandmail.comspainmail.comswedenmail.comswissmail.comtorontomail.comangelic.comatheist.comdisciples.cominnocent.comminister.commuslim.compriest.comprotestant.comreborn.comreincarnate.comreligious.comsaintly.commail\_ru❌mail.ruinternet.rubk.ruinbox.rulist.rumailfence❌mailfence.commeta\_ua❌meta.uamicrosoft❌outlook.comhotmail.comonline\_ua❌online.uaposteo❌posteo.atposteo.beposteo.caposteo.chposteo.clposteo.coposteo.co.ukposteo.com.brposteo.crposteo.czposteo.deposteo.dkposteo.eeposteo.esposteo.euposteo.fiposteo.glposteo.grposteo.hnposteo.hrposteo.huposteo.ieposteo.inposteo.isposteo.itposteo.jpposteo.laposteo.liposteo.ltposteo.luposteo.meposteo.mxposteo.myposteo.netposteo.nlposteo.noposteo.nzposteo.orgposteo.peposteo.plposteo.pmposteo.ptposteo.roposteo.seposteo.sgposteo.siposteo.tnposteo.ukposteo.usprotonmail❌proton.meprotonmail.comrambler❌ro.rur0.rurambler.rurambler.uaautorambler.rumyrambler.ruskiff❌skiff.comtutanota❌tutanota.comtutanota.detutamail.comtuta.iokeemail.meukr\_net❌ukr.netvk❌vk.comyahoo❌yahoo.comymail.comrocketmail.comyandex✅ya.ruyandex.ruyandex.byyandex.comyandex.kznarod.ru

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

4

Last Release

991d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/be4c8a13feb19fc6af7c9ea974de431c90c20c4f62e85b205a84c2bf16b2377a?d=identicon)[nazarpunk](/maintainers/nazarpunk)

---

Top Contributors

[![nazarpunk](https://avatars.githubusercontent.com/u/13901788?v=4)](https://github.com/nazarpunk "nazarpunk (22 commits)")

### Embed Badge

![Health badge](/badges/nazarpunk-email-address/health.svg)

```
[![Health](https://phpackages.com/badges/nazarpunk-email-address/health.svg)](https://phpackages.com/packages/nazarpunk-email-address)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
