E-posta ve teslim edilebilirlik

E-posta adresi doğrulama: regex neyi kanıtlar, neyi değil

Dört farklı kontrol tek bir kelimenin altında satılır, sırayla zorlaşırlar, ve yalnızca sonuncusu asıl bilmek istediğiniz şeyi kanıtlar. İşte bir kalıbın neyi kanıtlayabildiği, bir DNS sorgusunun buna ne kattığı, posta sunucusuna sormanın göründüğünden neden daha az işe yaradığı, ve dördünden hangisinin gerçek tek cevap olduğu.

  • Orta düzey
  • 21 dk okuma
Büyük mavi bir onay işareti taşıyan gri bir pano yanında havada duran mavi bir zarf, önlerinde çapraz işaretli, eğik duran daha küçük gri bir kart

Tek bir kelimeyi paylaşan dört soru

“Bu geçerli bir e-posta adresi mi?” tek bir soru değildir. Dört sorudur, sırayla zorlaşırlar, ve sonuncusu aslında herkesin yanıtını istediği tek sorudur — bu yüzden doğrulama kodunun çoğu ilki hakkında ayrıntılı, gerisi hakkında suskundur.

İşte, bir kayıt formunun karşılaştığı sırayla dördü de.

Bir adres gibi biçimlenmiş mi?
Bir söz dizimi kontrolü. Tarayıcıda çalışır, hiçbir şeye mal olmaz, ve yanlışlıkla yazılan virgülü ve eksik @ işaretini yakalar. Kendi başına dürüstçe bir şeyi reddedebilen tek katmandır — ve o zaman bile çoğu kalıbın reddettiğinden çok daha azını reddetmelidir.
O alan adı hiç posta alabilir mi?
Bir DNS kontrolü. Tek bir sorgu, @ işaretinden sonraki kısım için herhangi bir yerde herhangi bir şeyin posta kabul etmeye istekli olup olmadığını söyler. Bir harfi eksik bir alan adını ve geçen yıl süresi dolmuş bir alan adını yakalar, ve posta kutusu hakkında size hiçbir şey söyleyemez.
O posta kutusu var mı?
Bir SMTP kontrolü — bu rehberin, ona güvenmemeniz gerektiğini anlatmaya en uzun zamanı ayıracağı kontrol. Sorabilirsiniz. Yanıt çoğu zaman her adı kabul eden bir sunucudan gelen kibar bir evettir, ya da bilerek yapılmış geçici bir başarısızlıktır, ya da dakikalar sonra bir bounce ile takip edilen bir kabuldür.
Bu onların adresi mi?
Teknik tarafta hiçbir şey bunu yanıtlayamaz. Bir adres kusursuz, teslim edilebilir ve başkasına ait olabilir — bir haneyle yanlış yazılmış, ya da sizi atlatmak için bilerek yazılmış. Bunu yalnızca ulaşan ve kullanılan bir mesaj kapatır.
KalıpTarayıcıda çalışırDizenin biçimiDünya hakkında hiçbir şeyhiçbir şeye mal olmazDNS sorgusuÖnce MX, sonra AAlan adı posta alabilirKutu hakkında hiçbir şeytek bir sorguSunucu sondasıSorar, sonra kapatırNeredeyse hiçbir şeyCatch-all'lar her ada evet deryavaş, ve riskliOnaylanmış mesajBir kez kullanılan bağlantıBiri orada varSahip olmaya değer tek yanıttek bir gerçek mesajHer satır, üstündekinden daha fazlasına mal olur, ve daha fazlasına değer.
Dört katman, ve her birinin karara bağladığı şey. Yalnızca en alttaki satır kişi hakkında bir gerçek üretir; üstündeki üçü, mesajın gönderilmeye değer olması için alanı daraltır.

İlk üçü ucuzdur ve az şey kanıtlar. Dördüncüsü bu adı hak eden tek katmandır, ve bir mesaja mal olan da odur. Aşağıdaki her şey, pahalı olan boşa gitmesin diye ucuz üçünü iyi harcamakla ilgilidir.

Birinci katman: kalıp, ve bilemediği dört şey

Bir e-posta adresi için resmi bir düzenli ifade yoktur, ve olamaz da. RFC 5322 bir kalıp değil bir gramer tanımlar, ve bu gramer parantez içinde yorumlara, birden çok satıra yayılabilen boşluklara ve neredeyse her karakteri içerebilen tırnak içi dizelere izin verir — hiçbir gerçek kayıt formunun kabul etmemesi gereken şeyler, ve gramere sadık bir kalıbın kabul etmesi gereken şeylerin tamamı.

Var olan şey ise tarayıcıların zaten uyguladığı, bilerek daraltılmış bir tanımdır: HTML spesifikasyonunun bir <input type="email"> alanı için verdiği tanım. Standardın bir kopyası değil, bilinçli bir uzlaşmadır; kodunuzun bir satırı bile çalışmadan önce formunuz zaten buna tabidir; ve tek seferde okunacak kadar kısadır:

regex
/^[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])?)*$/

Onu kullanın, ya da platformunuzun zaten sunduğunu kullanın. Aşağıdaki dördü de aynı katmandır, ve hangisini seçtiğiniz, sonrasında ne yaptığınızdan daha küçük bir karardır:

Nerede olduğunuzZaten sahip olduğunuz kontrolBeklemeyebileceğiniz ne yaptığı
Tarayıcıda, hiç kod yazmadan<input type="email" required>JavaScript'iniz alanı görmeden önce yukarıdaki kalıbı uygular, ve mesajı ziyaretçinin kendi dilinde gösterir.
PHP'de, hiçbir şey kurmadanfilter_var($a, FILTER_VALIDATE_EMAIL)HTML'inkinden daha katı: alan adında bir nokta olmasında ısrar eder, bu yüzden yalnızca tek bir makine içinde işe yarayacak bir adresi reddeder.
Python'da, küçük bir paketleemail_validator.validate_email(a)Söz dizimini, ve izin verirseniz ikinci katmanın alan adı sorgusunu da yapar — tek bir çağrının arkasındaki iki ucuz katman.
Java ya da Kotlin'de, Bean Validation üzerinden@EmailBilerek çok toleranslı. Açıkça yanlış olanı yakalamak için tasarlanmış bir anotasyondur, ve hiç var olmamış bir alan adını gönül rahatlığıyla kabul eder.

Hangisini kullanırsanız kullanın, önemli olan hangi konuda sessiz kaldığıdır. true döndüren bir kalıp size bir şey söylemiş, dört şey hakkında hiçbir şey söylememiştir.

Alan adının var olduğunu değil
Kimsenin hiç kaydetmediği bir alan adındaki bir adres, bu bölümdeki her kalıptan geçer. Hiçbir şey sorgulanmamış ve hiçbir şeyle iletişime geçilmemiştir; hiçbir düzenli ifade hiçbir zaman bir ağ isteği yapmamıştır.
Posta kutusunun var olduğunu değil
Gerçek bir alan adında bile, kalıbın @ işaretinden önceki kısım hakkında hiçbir fikri yoktur. O kısım yalnızca alıcı sunucuya aittir, ve DNS'in size asla söylemeyeceği şey tam olarak budur.
Teslim edilebilir olduğunu değil
Bir alan adının kaydı kusursuz olabilir, ve posta sunucusu bir aydır kapalı olabilir. Söz dizimi bir dizenin özelliğidir; teslim edilebilirlik ise gönder'e bastığınız andaki dünyanın özelliğidir.
Onu yazan kişiye ait olduğunu değil
Herhangi bir veritabanındaki en yaygın kötü adres, hiç kayıt olmamış birine ait, gerçek ve teslim edilebilir bir adrestir — çünkü bir harf yanlış yazılmıştır, ya da form inandırıcı görünen bir yalanla doldurulmuştur.

İkinci katman: tek bir sorgu, ve karara bağladığı şey

@ işaretinden sonraki kısım bir alan adıdır, ve bir alan adının postayı koyacağı bir yer ya vardır ya yoktur. Tek bir DNS sorgusu bunu birkaç milisaniyede yanıtlar, ve bu rehberdeki en değerli kontroldür — çünkü yakaladığı hata, biraz yanlış yazılmış bir alan adı, açık ara en yaygın gerçek başarısızlıktır.

shell
$ dig +short MX example.com

Bir yanıt, bir sunucunun adlandırıldığı anlamına gelir. Yanıt yokluğu posta yok demek değildir: MX kaydı olmayan ama A kaydı olan bir alan adı yine de posta alır, çünkü gönderenler ona geri döner. Dört sonuç vardır, ve yalnızca ikisi başarısızlıktır.

Sorgunun döndürdüğü şeyPosta alabilir mi?Formun ne yapması gerektiği
Bir ya da daha fazla MX kaydıEvetKabul edin. Adreslerin ezici çoğunluğu budur, ve göndermeden önce yapmaya değer başka hiçbir şey yoktur.
MX yok, ama bir A ya da AAAA kaydı varEvet, geri dönüşleKabul edin. Bu alışılmadıktır ve tamamen geçerlidir, ve gönderenler oraya teslim eder. Onu reddetmek, çalışan bir adresi kaybedilmiş bir müşteriye dönüştürür.
Tüm değeri 0 . olan tek bir kayıtHayır, ve bilerekReddedin, ve sebebini söyleyin. Bu bir null MX'tir: alan adının sahibi, bunu yayınlamanın tek yolunu kullanarak, burada hiçbir şeyin posta almadığını duyurmuştur.
Alan adı hiç çözümlenmiyorHayırReddedin, ve en yakın olasılığı önerin. Bir insanın otuz saniye önce yazdığı bir addaki NXDOMAIN, neredeyse her zaman yanlış yazılmış tek bir harftir.

Bu kontrolün yanlış gittiği yer asla sorgunun kendisi değildir. Sorgunun nereye konduğudur — kritik yolun üzerine, her tuş vuruşunda, gönderimi engelleyen bir başarısızlıkla. Altı kural onu yararlı tutar:

  1. Alan doldurulduktan sonra çalıştırın, yazılırken değil. Odak alandan ayrılınca bir sorgu, ya da gönderimde bir sorgu. Her tuş vuruşunda bir sorgu, her tuş vuruşunda bir sorgudur.
  2. Önce alan adını küçük harfe çevirin. DNS bunu önemsemez, ama önbelleğiniz önemser: aynı alan adının iki farklı yazımı, iki değil tek bir sorgudur.
  3. MX isteyin, ve A'ya geri dönün. İki sorgu, yalnızca ikincisi koşulludur. Yalnızca MX'i kontrol eden bir kütüphane, çalışan alan adlarını reddeder.
  4. Yanıtı birkaç dakika önbelleğe alın. Her yerde kayıtların çoğu bir avuç alan adında toplanır, bu yüzden sorguların çoğu hiç sorgu olmaktan çıkar.
  5. Belirsizlikte kabul yönünde hata verin. Çözümleyici zaman aşımına uğrarsa, adresi kabul edin. DNS sağlayıcınızdaki kötü bir dakika, hiçbir zaman herkesi geri çeviren bir forma dönüşmemelidir.
  6. Düzeltme önerin; asla kendiniz uygulamayın. Alan adı bilinen bir alan adından bir harf farklıysa, düzeltmeyi tıklanacak bir şey olarak sunun. Birinin yazdığını sessizce değiştirmek, bir onay bağlantısının bir yabancıya gitmesinin yoludur.

Sorgunun bilinmeye değer bir bedeli vardır: formunuzun, bir ziyaretçinin yazdığı bir şey hakkında dış dünyayla konuştuğu ilk andır. Bunun önemli olduğu yerlerde, alternatif bu katmanı tamamen atlamak ve tüm kontrolü mesajın kendisine bırakmaktır.

Üçüncü katman: sunucuya sormak, ve yanıtın neden bir yanıt olmadığı

Bir posta sunucusuna, ona hiçbir şey göndermeden belirli bir adresi alıp almayacağını sormanın bir yolu vardır. Görüşmeyi açın, bir gönderen adlandırın, alıcıyı adlandırın, o tek komuta gelen yanıtı okuyun, ve mesajdan önce kapatın:

smtp
220 mx1.example.com ESMTP ready
EHLO checker.example.net
250 mx1.example.com
MAIL FROM:<probe@example.net>
250 2.1.0 Ok
RCPT TO:<someone@example.com>
250 2.1.5 Ok
QUIT
221 2.0.0 Bye

RCPT TO'dan sonraki 250, dünyadaki her adres teyit hizmetinin sonuçta sattığı şeydir. Ne kadar az değerli olduğu konusunda kesin olmaya değer.

Bir catch-all alan adı her şeye evet der
Her adı kabul edecek şekilde ayarlanmış bir alan adı — ki bu hizmetin yaptığı da, pek çok şirket alan adının yaptığı da budur — kimsenin hiç kullanmadığı bir adrese 250 yanıtı verir. Yanıt doğrudur, ve bilgi değildir.
Dikkatli bir sunucu bilerek 450 der
Gri listeleme, bilinmeyen bir gönderenin ilk denemesini reddeder ve kısa süre sonra tekrar gelmesini ister. Gerçek bir gönderen tekrar gelir; bir sonda asla gelmez. Bu geçici başarısızlık, kasıtlı bir yanıtsızlıktır, ve onu “böyle bir posta kutusu yok” diye okumak, tam olarak üretmek üzere tasarlandığı hatadır.
Bazı sunucular önce kabul eder, sonra reddeder
Büyük sağlayıcılar rutin olarak mesajı görüşme sırasında alır ve kararını sonra verir, bu da bir reddi, sondanız temiz döndükten dakikalar sonra gelen bir bounce'a dönüştürür.
Bazı sunucular tanımadıkları herkese hayır der
Adresinizin bir yabancı olduğuna karar vermiş bir sunucu, alıcıyla hiçbir ilgisi olmayan sebeplerle alıcıyı reddedebilir. Ölçtüğünüz şey onların posta kutusu değil, kendi itibarınızdı.
Ve korumaya çalıştığınız itibarı harcar
Alıcıları adlandırıp hiçbir şey göndermeyen bir bağlantı, tam olarak bir dizin hasadının şeklidir, çünkü zaten odur. Bunu kendi adresinizden yoğun biçimde yapmak, bir kara listeye girmenin en hızlı yoludur — ve kara listeye giren bir gönderenin gerçek mesajları artık ulaşmaz olur.

Sondanın gerçekten yararlı olduğu dar bir durum vardır: tek bir adres, elle kontrol edilen, işlettiğiniz ya da dokunma izniniz olan bir alan adında. Bir kayıt formunun içinde bir adım olarak ise yavaştır, sık sık yanlıştır, ve bazen korumak için eklendiği şeye zarar verir.

Rol adresleri, tek kullanımlık alan adları, ve satın almak üzere olduğunuz liste

Alan adı sorgusu ile gerçek mesaj arasında, geçerlilikle hiç ilgisi olmayan bir kontrol ailesi bulunur. Bu adresi isteyip istemediğinizle ilgilidirler — ki bu, teknik bir kostüm giymiş bir iş kararıdır — ve yalnızca bu sebeple bile, çevresindeki üç katmandan ayrı tutulmaya değer.

Rol adresleri
info@, support@ ve admin@ gibi adlar. Gerçektirler, ve genellikle bir kişi değil paylaşılan bir posta kutusudur, bu da onları arkasında bir parola olan herhangi bir şey için kötü bir ev yapar. İşaretlemeye değer. Nadiren reddetmeye değer.
Tek kullanımlık alan adları
Bu sitenin dağıttığı adresler gibi, atılmak için var olan alan adlarındaki adresler. Bunların herkese açık bir listesine karşı kontrol etmek yeterince makuldür, yeter ki böyle her listenin indirdiğiniz gün bile eksik ve biraz eski olduğu konusunda dürüst olun.
Ücretsiz sağlayıcı adresleri
Bazı iş formları, bir şirket alan adı olmayan her şeyi reddeder. Bu bir politikadır, bazen doğru politikadır, ve doğrulama denen bir şeyin içinde gizlenmek yerine bir politika olarak — ziyaretçinin okuyabileceği bir cümle olarak — yazılmayı hak eder.
Bilinen alan adlarına yakın yazım hataları
Tanınmış bir sağlayıcının bir harfi yanlış yazılmış adı. Bu, diğer üçünden farklıdır: bir politika değildir, gerçek bir hatayı yakalar, ve kişi her zaman memnun olur. Burada inşa etmeye değer tek madde budur.

İlk üçü, onları değerlendirmeyi zorlaştıran ortak bir özelliği paylaşır: neyi geçirdiklerini ölçebilirsiniz, ama neye mal olduklarını ölçemezsiniz.

Burada gözle görülür bir çıkarımız var, o yüzden dürüst olanını söyleyelim. Formunuzun arkasında pahalı bir şeye bağlı ücretsiz bir deneme varsa, tek kullanımlık alan adlarını reddetmek size para kazandırır ve bunu yapmalısınız. Bir bülten, bir indirme, ya da birinin parasını ödediği bir hesapsa, çoğunlukla dikkatli olanları cezalandırıyorsunuzdur — ve dikkatli olanlar, gönderdiğinizi okuyanlardır.

Dördüncü katman: kontrolün kendisi olan mesaj

Yukarıdakilerin hepsi alanı daraltır. Hiçbiri önemli olan tek gerçeği ortaya koymaz — bu adresin karşınızdaki kişiye ulaştığını — ve bunu yapan tam olarak tek bir şey vardır: oraya bir şey göndermek, ve kullanıldığını görmek.

Bu, neredeyse her kaydın zaten sahip olduğu ve yarısının bir formalite olarak gördüğü döngüdür:

  1. Adresi tek bir toleranslı kontrolle kabul edin. Tarayıcıdaki kalıp, ve ziyaretçi ile düğme arasında başka hiçbir şey olmasın.
  2. Hesabı teyitsiz olarak oluşturun. Formda bir bekletme değil, bir “beklemede” ekranı değil: kişi içeridedir, ve henüz yapamadığı şey yalnızca adresin gerçekten gerekli olduğu birkaç şeydir.
  3. Tek kullanımlık bir bağlantı ya da kod taşıyan bir mesaj gönderin. Tek bir tane, süresi olan, yalnızca o hesaba ve o adrese bağlı, başka hiçbirine değil.
  4. Kanıt bağlantı olsun. Bir tıklama, ya da geri yazılan bir kod, teyidin tamamıdır. Bu rehberdeki başka hiçbir şey, buna yakın sağlam bir yanıt üretmez.
  5. Onlara bir geri dönüş yolu verin. Görünür bir “yeniden gönder”, ve hesabı kaybetmeden adresi değiştirmenin bir yolu — çünkü bir bağlantının hiç tıklanmamasının en yaygın sebebi, kişinin artık nihayet görebildiği bir yazım hatasıdır.
  6. Kimsenin onaylamadıklarının süresini doldurun. Sabit bir süre sonra yapılan sessiz bir temizlik, yazım hatalarının ve tek kullanımlık adreslerin kimsenin güvenmediği bir listeye yığılmasını önler.

Bu da pratik bir sorun yaratır, ve bu sitenin var olma sebebi de odur. O döngü artık üründeki en önemli yoldur, ve onu test etmek, kontrol ettiğiniz bir adrese gerçek posta almak anlamına gelir — defalarca, bir pipeline içinde, hiçbir insan bir gelen kutusu açmadan.

Herkese açık alan adlarından birindeki bir adres ne kayıt ne de anahtar gerektirir, ve oraya ulaşan her şey bir saniye sonra HTTP üzerinden okunabilir:

shell
$ curl -sG https://grabmail.io/api/v1/mailbox \
  --data-urlencode "address=signup-42@grabmail.io"

Oradan itibaren, bir test paketi tarafından uçtan uca yürütülebilen bir teyit akışının tamamı, ya da her çalıştırmanın daha önce hiç var olmamış bir adres almasını sağlamak için buraya yönlendirilebilen sahip olduğunuz bir alan adı. Mesajlar 5 gün saklanır ve sonra silinir, ki bu bir test fixture'ı için doğru, bir posta kutusu için yanlış bir ömürdür.

Forma gerçekte ne koymalı

Kodun çalıştığı sırayla, özetle:

  1. Kırpın, ve yalnızca kırpın. Her iki uçtaki boşluk bir yapıştırma artığıdır, ve asla kasıtlı değildir. Dizenin başka hiçbir yerini değiştirmek size düşmez.
  2. Tek bir toleranslı kalıpla eşleştirin. Tarayıcınınkiyle, ya da platformunuzunkiyle. Eksik @'ı ve yanlışlıkla yazılan virgülü reddedin, başka hiçbir şeyi reddetmeyin.
  3. Uzunluğu 254 ile sınırlayın. Sütunda ve alanda tek bir sayı, ve artık hakkında düşünmeyi bırakabileceğiniz koca bir girdi sınıfı.
  4. Alan adını kritik yolun dışında sorgulayın, belirsizlikte kabul ederek. Önce MX, sonra A, önbelleğe alınmış, ve aksi halde çalışacak bir gönderimi asla engelleme sebebi olmasın.
  5. Bir düzeltme önerin; kendiniz yapmayın. Bilinen bir alan adından bir harf uzakta olmak, üzerine hareket edilecek bir bulgu değil, sorulacak bir sorudur.
  6. Mesajı gönderin. Doğrulama budur. Bundan öncekilerin hepsi ön eleme.
  7. Neyin yanlış olduğunu kelimelerle söyleyin. Kimsenin işini bitirip bitirmeyeceğine karar veren kısım budur:
Ne olduFormların genellikle söylediğiBunun yerine ne söylenmeli
Dizede @ işareti yok“Lütfen geçerli bir e-posta adresi girin”“Bir e-posta adresinin bir @ işaretine ihtiyacı var — name@example.com mu demek istediniz?”
Alan adı çözümlenmiyor“Lütfen geçerli bir e-posta adresi girin”“Bu alan adını bulamıyoruz. Yazım doğru mu?”
Alan adı bilinen bir alan adından bir harf farklıHiçbir şey; form gönderilir“… mi demek istediniz?”, düzeltilmiş adres tıklanacak bir düğme olarak
Kullanmayı seçtiğiniz bir kara listede“Lütfen geçerli bir e-posta adresi girin”“Bunun için gelecek ay da hâlâ okuyabileceğiniz bir adrese ihtiyacımız var.”
Mesaj gitti ve hiç onaylanmadıHiçbir şey; hesap orada öylece durur“O adrese bir bağlantı gönderdik. Ulaşmadı mı? Yeniden gönderin, ya da adresi değiştirin.”

Kaç satırın aynı yanlış şeyi söylediğine dikkat edin. “Lütfen geçerli bir e-posta adresi girin” her yerde varsayılan mesajdır, çünkü her durum için doğrudur ve hiçbiri için yararlı değildir: beş satırdan üçünde adres geçerliydi, ve onu yazan kişinin hangi satırda olduğunu keşfetmenin bir yolu yoktur.

Kısa versiyon

  1. Dizeyi kırpın. Başka hiçbir şeyini değiştirmeyin.
  2. Tek bir toleranslı kalıpla eşleştirin — tarayıcınınkiyle ya da platformunuzunkiyle — ve orada durun. Kendinizinkini yazmayın.
  3. 254 karakterden uzun her şeyi reddedin, ve o boyutta bir sütun saklayın.
  4. Alan adı için MX sorgulayın, A'ya geri dönün, önbelleğe alın, kritik yolun dışında yapın, ve sorgu başarısız olduğunda adresi kabul edin.
  5. Çözümlenmeyen bir alan adını ve null MX yayınlayan bir alan adını reddedin. DNS'in size verdiği başka her şeyi kabul edin.
  6. Alan adı yakın bir yazım hatasıysa bir yazım önerisi sunun. Asla kendiniz uygulamayın.
  7. Tek kullanımlık ya da rol adreslerini engelleyip engellemediğinize — ve nedenine — ayrı ve yazılı olarak karar verin.
  8. Tek kullanımlık bir bağlantı içeren bir mesaj gönderin, tıklamayı teyit olarak kabul edin, ve yeniden göndermeyi ve adresi düzeltmeyi kolaylaştırın.
  9. O döngüyü gerçek bir gelen kutusuna karşı test edin, başarısız olduğu yollar dahil, ve onaylanmamış hesapları belirli aralıklarla silin.

Dokuz satır, ve yalnızca son ikisi bir şey ortaya koyar. Diğer yedisi, sonlarındaki mesajın gönderilmeye değer olması için vardır.

Sorular

E-posta adresleri için resmi bir düzenli ifade var mı?

Hayır, ve olamaz da. RFC 5322 bir kalıp değil bir gramer verir, ve ona sadık bir kalıp, hiçbir sağlayıcının vermediği tırnak içi boşlukları ve parantez içi yorumları kabul ederdi. HTML spesifikasyonunun bir e-posta alanı için tanımladığını, ya da platformunuzun zaten sunduğu hangi denetleyiciyse onu kullanın, ve böylece kazandığınız emeği onay mesajına harcayın.

Bir şey göndermeden bir e-posta adresinin var olup olmadığını kontrol edebilir miyim?

Sorabilirsiniz; bilemezsiniz. Bir catch-all alan adı her adı kabul eder, gri listeleme kasıtlı bir geçici başarısızlıkla yanıt verir, büyük sağlayıcılar görüşme sırasında kabul edip sonradan bounce yapar, ve sizi tanımayan bir sunucu, alıcıyla değil sizinle ilgili sebeplerle reddedebilir. Toplu yoklama ayrıca gönderen adresinizi kara listelere sokar.

name+tag@example.com geçerli bir adres midir?

Evet. Artı işareti, yerel kısımda izin verilen sıradan bir karakterdir, ve çoğu büyük sağlayıcıda önündeki posta kutusuna da yönlenir, ki artı adreslemeyi yararlı yapan da budur. Onu reddeden bir form, geçerli adresleri reddediyor ve bunu yaparken kendisi hakkında bir şey ilan ediyordur.

E-posta adresleri büyük/küçük harfe duyarlı mıdır?

Alan adı asla değildir. @ işaretinden önceki kısım ise, standarda göre, alıcı sunucuya bırakılmıştır — ve pratikte her büyük sağlayıcı büyük/küçük harfi görmezden gelir. Yinelenenleri tespit etmek için küçük harfe çevrilmiş bir kopya tutun, ve tam olarak yazıldığı şekliyle dizeye gönderin.

Bir e-posta adresi en fazla ne kadar uzun olabilir?

@'dan önce 64 karakter, alan adı için 255, ve bir sunucu taşırken adresin tamamı için 254. Bu üçünden kullanılacak sayı sonuncusudur: onu veritabanı sütununa ve alana koyun, ve koca bir girdi sınıfı artık sizin sorununuz olmaktan çıksın.

Tek kullanımlık e-posta adreslerini engellemeli miyim?

Ücretsiz bir denemenin arkasında pahalı bir şey varsa, evet — ve kullandığınız listenin eksik olduğunu kabul edin. Bir bülten, bir indirme ya da ücretli bir hesap için, geri çevirdiğiniz kişiler çoğunlukla dikkatli olanlardır, ve onları bir günlükte hiç görmezsiniz. Kararı sizin yerinize veren bir paket kurmadan önce bunun bütün bedelini okumaya değer.

Gerçek bir posta kutusu olmadan bir kayıt teyit akışını nasıl test ederim?

Herkese açık, tek kullanımlık bir alan adındaki bir adrese gönderin ve API üzerinden geri okuyun — ne kayıt, ne anahtar, ve her çalıştırma için taze bir adres. Yüzlercesine ihtiyaç duyan bir paket için, sahip olduğunuz bir alan adını bir catch-all gelen kutusuna yönlendirin ve test başına bir adres uydurun. Baştan sona anlatım bir e-posta teyit akışını uçtan uca test etmek rehberinde.

Okumaya devam edin

Henüz tazeyken deneyin

Bir adres tek tıkla alınır, hesap ve kart gerekmez. Bu rehberdeki her şey onunla hemen çalışır.

Tekrar hoş geldiniz

Kutularınız ve alan adlarınız tek bir yerde.