Kontrola e-mailových adres
Možná si v tabulkovém editoru vedete seznam kontaktů a lidem pak posíláte e-maily. Občas se vám jistě stane, že se vám e-mail vrátí jako nedoručitelný, protože někdo udělal při opisování adresy chybu a v seznamu máte neplatné adresy. V následujícím návodu se dozvíte, jak chybné adresy najít a opravit ještě před odesláním.
Potřebný software
Pokud ho ještě nemáme, stáhneme si a nainstalujeme LibreOffice. Tento kancelářský balík je zadarmo a co je ještě lepší, je to svobodný software. Jestli máte OpenOffice, můžete použít i tento balík.
Filtrujeme neplatné adresy
Náš seznam adres vypadá přibližně tak, jak je uvedeno na prvním obrázku. Akorát těch adresu budeme mít třeba tisíc, to už se ručně kontroluje dost špatně. Použijeme tedy funkci pro filtrování. Najdeme ji v hlavní nabídce: Data / Filtr / Standardní filtr:
Dialog vyplníme podle následujícího obrázku:
- zvolíme sloupec, který obsahuje adresy
- jako podmínku zadáme nerovnost: <>
- hodnota je:
^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$
- zaškrtneme volbu Regulární výraz, protože ta podivnost výše je tzv. regulární výraz. Jestli vás to zajímá, můžete si o nich něco přečíst třeba na Ábíčku, na Rootu nebo v dokumentaci Perlu.
Teď už vidíme jen adresy, které jsou neplatné – zobrazují se jen řádky 4 a 7 – a můžeme je opravit:
Když máme hotovo, filtr zase můžeme zrušit: Data / Filtr / Odstranit filtr.
Někomu tohle asi přijde moc složité – ano, je to složité – kdo si rozumí s příkazovou řádkou, tomu stačí dva unixové (resp. GNU) příkazy: cat a grep:
cat adresy.csv | grep -v -E "^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$";
Na závěr je třeba říct, že použitý regulární výraz není úplně dokonalý – neodhalí některé chybné adresy a naopak někdy způsobí falešný poplach (např. nepodporuje IDN domény), vybral jsem ho ale pro jednoduchost a názornost (a taky se těším, až narazím na někoho, kdo má e-mail v doméně .museum
:-) Nejčastější překlepy, jako je čárka místo tečky nebo chybějící zavináč, tento RegExp v pohodě odhalí. Lepší najdete třeba v perlovském modulu Mail::RFC822::Address.
A úplně na závěr: pokud budete posílat spam, skončíte v pekle.
IP adresa
A co třeba jenda@[213.220.240.179]? mailx mi sice vynadá, že prý domain literals not allowed, ale teoreticky by to chodit mělo ;-)
Mělo – můžeš takový
Mělo – můžeš takový regexp napsat za domácí úkol :-) A nezapomeň na podporu IPv6 adres. Někde už jsem takový výraz viděl, ale bylo to hodně dlouhé a ne zrovna pěkné čtení – nechtěl jsem tady nikoho znechutit nebo odradit :-)
Štítky
Některé emailové služby (gmail?) umožňují štítkování emailů pomocí symbolu plus následovně:
pepa@domain.tld
pepa+tag@domain.tld
pepa+tag+jinytag@domain.tld