2013-08-11 4 views
6

जैसा कि आप जानते हैं कि ऐसे कई पात्र हैं जिनका उपयोग ई-मेल पते में किया जा सकता है। लोग आजकल उनके ई-मेल एड्रेस के कुछ कीवर्ड विभाजित पठनीयता में सुधार करने के लिए, जैसे:ईमेल पता प्रमाणीकरण (बिंदु और पूंजीकरण)

[email protected] 
[email protected] 

हालांकि, डॉट चरित्र . जीमेल (और साथ ही बड़े करना) का उपयोग करते समय केवल पठनीयता में सुधार, यह खाते में नहीं लिया जाता है ई-मेल पते के हिस्से के रूप में। इस प्रकार, हम कह सकते हैं कि:

[email protected] रूप [email protected]

[email protected] ही है

वेबसाइटों में से अधिकांश का प्रयोग कर एक डेटाबेस चालित रूप [email protected]


समस्या एक ही है प्रमाणीकरण। मान लें कि मैं एक ईमेल (डॉट्स) के बिना पंजीकृत [email protected] तो, इस तरह के एक MySQL क्वेरी के रूप में तार अलग काम नहीं करेगा:

SELECT * FROM users WHERE email = "[email protected]" ;


सवाल

कोई वैकल्पिक हल के लिए है इस तरह की समस्या हल करें? वास्तव में विभिन्न ई-मेल सर्वर विभिन्न नियमों का उपयोग करते हैं। तो क्या उपयोगकर्ताओं को हमेशा याद रखना होगा, किस वेबसाइट पर उन्होंने डॉट्स या पूंजी अक्षरों का उपयोग किया है, यहां तक ​​कि ई-मेल पता अभी भी वही है?


अद्यतन

बस कुछ सेवा है, जहां आप एक ही ई-मेल का उपयोग कर खातों की tonns कर सकता है कल्पना।

[email protected] 
[email protected] 
[email protected] 

और फिर भी आप एक ही पते पर ईमेल की पुष्टि हो रही होगी: मूल ईमेल [email protected], उपनाम है। अजीब लगता है, हुह?

+1

यह पूरी तरह से प्राप्तकर्ता सर्वर पर निर्भर करता है कि 'foo.bar' को' foobar' के समान पते के रूप में माना जाता है, ऐसा कोई सामान्य विनिर्देश नहीं है। – deceze

+2

पूंजी अक्षरों के साथ कोई समस्या नहीं है - आप लोअरकेड फॉर्म डाल सकते हैं और इसके खिलाफ जांच सकते हैं। बिंदुओं के लिए, यह जीमेल सुविधा है, लेकिन अन्य मेल प्रदाता उनसे दो अलग-अलग ईमेल के रूप में व्यवहार कर सकते हैं। –

+0

ठीक है, वह जानकारी बहुत उपयोगी है – vikingmaster

उत्तर

8

यदि आप वास्तव में वास्तव में आपको प्रस्तावित करने के तरीके को हल करने के लिए हल करना चाहते हैं, तो आपको अपने ईमेल पते को किसी प्रकार के कैनोलिक रूप के रूप में स्टोर करना होगा। सभी निचले मामलों को कहें और "डॉट्स" या किसी अन्य विशेष चरित्र को हटाकर जिसे आप अनदेखा करना चाहते हैं।

आप ट्रिगर (http://sqlfiddle.com/#!2/81689/1) का उपयोग करके "automatize" हो सकता है बात:

create table email(addr char(80), canon char(80) UNIQUE); 
CREATE TRIGGER ins_email BEFORE INSERT ON email 
FOR EACH ROW 
    SET NEW.canon = REPLACE(LOWER(NEW.addr), ".",""); 

INSERT IGNORE INTO email(addr) VALUES ("[email protected]"), 
    ("[email protected]"), 
    ("[email protected]"); 

यह केवल संत घोषित रूप के आधार पर तालिका में एक पंक्ति सम्मिलित होंगे। कृपया अंतिम उदाहरण पर ध्यान से देखें। डोमेन "ex.ample.com" है जो मेरे सरल ट्रिगर द्वारा "examplecom" के रूप में कैनन किया गया है। जो शायद वांछनीय है। यह सिर्फ यह इंगित करने के लिए है कि सही canonization शायद REPLACE(LOWER(... से थोड़ा अधिक जटिल हो सकता है। इसके अतिरिक्त आपको शायद इस ट्रिगर के डुप्लिकेट ON UPDATE बनाने की आवश्यकता होगी। परंतु...


... मैं के रूप में उस दिशा में आगे नहीं जाना होगा:

"पूंजीकरण [..] खाते में नहीं लिया जाता है"

यह एक है आम गलतफहमी: डोमेन नाम (@ के दाईं ओर) केस संवेदनशील नहीं हैं। लेकिन local parts (@ के बाईं ओर) केस संवेदनशील हैं। विशेष मामले postmaster के अलावा।

अधिकांश एमटीए "स्थानीय भाग" की केस संवेदनशीलता को अनदेखा करने के लिए कॉन्फ़िगर किए गए हैं। लेकिन यह बिल्कुल जरूरी नहीं है। वास्तव में RFC5321 section 2.2 स्पष्ट रूप से बताता है कि "मेलबॉक्स का स्थानीय हिस्सा केस संवेदनशील के रूप में माना जाना चाहिए।"

+0

+1 पहले से ही अच्छा जवाब है और मुझे उम्मीद है कि आपने गम्बो के बिंदु –

+0

@ NullPoiиteя को देखा है, मैं * जीमेल * से परिचित नहीं हूं और मैं इसे पढ़कर सबसे आश्चर्यचकित हूं कि '+' के बाद कुछ भी अनदेखा किया गया है! विडंबना यह है कि आरएफसी 5321 के लेखक का ई-मेल पता *[email protected]*: डी –

+0

है ... ठीक है, हर मेल वितरण प्रणाली मुफ्त डिलीवरी/अग्रेषित मेल है जैसा वह चाहती है। * वास्तविक * समस्या हमारे लिए आवेदन-स्तर पर है। क्या हमें आरएफसी का सख्ती से पालन करना है, या क्या हमें विभिन्न मेल प्रदाता के प्रत्येक सबटाइटी को ध्यान में रखना है, जैसा कि लोकप्रिय हैं? विशेष रूप से यहां, चूंकि ईमेल पता को कभी-कभी "अद्वितीय उपयोगकर्ता आईडी" के रूप में देखा जाता है। –

संबंधित मुद्दे