ຂ້ອຍຕ້ອງໄດ້ເຮັດການຂຸດຂຸມໃນມື້ນີ້ເພື່ອຊອກຫາມັນ, ແຕ່ເຈົ້າຮູ້ບໍ່ວ່າຄວາມຍາວຂອງທີ່ຢູ່ອີເມວແມ່ນຫຍັງ? ມັນຖືກແຍກອອກເປັນພາກສ່ວນ… ຊື່@Domain.com. ນີ້ແມ່ນອີງຕາມ RFC2822.
- ຊື່ສາມາດຕັ້ງແຕ່ 1 ເຖິງ 64 ໂຕອັກສອນ.
- ໂດເມນສາມາດຕັ້ງແຕ່ 1 ເຖິງ 255 ໂຕອັກສອນ.
ດອກ… ໝາຍ ຄວາມວ່ານີ້ອາດຈະແມ່ນອີເມວທີ່ຖືກຕ້ອງ:
loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc @ loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitca Sedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaiidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPasellusatin
ciduntaturpisaduis.com
ລອງເຮັດແບບນີ້ໃສ່ໃນນາມບັດ! ໜ້າ ແປກໃຈ, ທີ່ຢູ່ອີເມວສ່ວນໃຫຍ່ແມ່ນ ຈຳ ກັດຢູ່ 100 ຕົວອັກສອນໃນເວັບ. ທີ່ຈິງບໍ່ຖືກຕ້ອງ. ຖ້າທ່ານຕ້ອງການຢືນຢັນທີ່ຢູ່ອີເມວ ສຳ ລັບການກໍ່ສ້າງທີ່ ເໝາະ ສົມໂດຍ ນຳ ໃຊ້ PHP, ຂ້າພະເຈົ້າໄດ້ພົບເຫັນຫຍໍ້ນີ້ຢູ່ໃນເນັດ:
http://derrick.pallas.us/email-validator/ # ໃບອະນຸຍາດ: ໃບອະນຸຍາດ ສຳ ລັບການສຶກສາ 2.1 # ຮຸ່ນ: 2006-12-01a ຖ້າ (! ereg (''. '^'. '[-! # $% & \ '* + / 0-9 =? AZ ^ _a-z {|} ~]'. '(\\.? [-! # $% & \' * + / 0-9 =? AZ ^ _a-z { |} ~]) * '.' @ '.' [a-zA-Z] (-? [a-zA-Z0-9]) * '.' (\\. [a-zA-Z] (- ? [a-zA-Z0-9]) *) + '.' $ ', $ ອີເມວ)) ສົ່ງຄືນທີ່ບໍ່ຖືກຕ້ອງ; ບັນຊີ ($ ທ້ອງຖິ່ນ, $ ໂດເມນ) = ແບ່ງປັນ ("@", $ email, 2); ຖ້າ (strlen ($ ທ້ອງຖິ່ນ)> 64 || strlen ($ domain)> 255) return false; ຖ້າ ($ ກວດເບິ່ງ &&! gethostbynamel ($ ໂດເມນ)) ສົ່ງຄືນບໍ່ຖືກຕ້ອງ; ກັບມາເປັນຄວາມຈິງ; # ຈົບ ######}
ຂ້ອຍດີໃຈທີ່ມີຄົນພົບວ່າມີປະໂຫຍດ! ການຄົ້ນຫາໃນ Google ສໍາລັບ "email regexp" ສະແດງໃຫ້ເຫັນການສະແດງອອກເປັນປົກກະຕິຫຼາຍທີ່ບໍ່ sync up ກັບ RFC.
ແມ່ນແລ້ວ, ຂ້ອຍສັງເກດເຫັນການຂາດການປະຕິບັດຕາມວິທີແກ້ໄຂອື່ນໆກັບ RFC ເຊັ່ນກັນ. ຂ້າພະເຈົ້າໄດ້ສັງເກດເຫັນ, ເຖິງແມ່ນວ່າ, ເຖິງແມ່ນວ່າ regex ນີ້ແມ່ນ atypical ແລະບໍ່ແມ່ນມາດຕະຖານ. ຂ້າພະເຈົ້າຈື່ຈໍາການອ່ານ regex ຕົວຈິງ (ອະນຸຍາດໃຫ້ <,>, , etc) ແມ່ນເຂັ້ມຂຸ້ນເກີນໄປສໍາລັບຂະບວນການສ່ວນໃຫຍ່.
ຢ່າງໃດກໍຕາມ, ມັນຖືກຂຽນຢ່າງຫຍໍ້ໆແລະແນ່ນອນການແກ້ໄຂທີ່ຄວນຈະເປັນທີ່ຍອມຮັບໄດ້ກັບຄໍາຮ້ອງສະຫມັກອີເມລ໌ວິສາຫະກິດ.
ຂອບໃຈອີກຄັ້ງ!
Doug
ແຕ່ຫນ້າເສຍດາຍ, ຂ້າພະເຈົ້າໄດ້ເຊື່ອມຕໍ່ຫນ້ານັ້ນກັບ RFC ທີ່ບໍ່ຖືກຕ້ອງ (2821 ແທນທີ່ຈະເປັນ 2822) ແຕ່ມັນຖືກແກ້ໄຂແລ້ວ. ວົງເລັບມຸມບໍ່ສາມາດເປັນສ່ວນຫນຶ່ງຂອງທ້ອງຖິ່ນຫຼືໂດເມນຂອງທີ່ຢູ່ອີເມວ; ແທນທີ່ຈະ, ພວກເຂົາເຈົ້າເປັນຕົວແທນຂອງຈຸດ tokenization, ie ພວກເຂົາສາມາດຖືກນໍາໃຊ້ເພື່ອອ້ອມຮອບທີ່ຢູ່ອີເມວ (ຕົວຢ່າງໃນຕົວອ່ານເມລຂອງເຈົ້າ) ຊັດເຈນເພາະວ່າພວກເຂົາບໍ່ສາມາດເປັນສ່ວນຫນຶ່ງຂອງທີ່ຢູ່.
ສິ່ງຫນຶ່ງທີ່ຫນ້າທີ່ຂອງຂ້ອຍບໍ່ໄດ້ເຮັດແມ່ນກັງວົນກ່ຽວກັບແບບຟອມທີ່ອ້າງອີງຂອງທີ່ຢູ່ອີເມວ - ບ່ອນທີ່ພາກສ່ວນທ້ອງຖິ່ນປາກົດຢູ່ໃນວົງຢືມສອງເທົ່າ - ເພາະວ່າ RFC2821 ເວົ້າຢ່າງສໍາຄັນວ່າບໍ່ມີໃຜຄວນຂຽນທີ່ຢູ່ຂອງເຂົາເຈົ້າດ້ວຍວິທີນັ້ນ. (ຂ້າພະເຈົ້າເຊື່ອວ່າຮູບແບບແມ່ນສໍາລັບການເຂົ້າກັນໄດ້ກັບຫຼັງແລະໃນປັດຈຸບັນແມ່ນການປະຕິບັດທີ່ບໍ່ດີ.
ຕົວຈິງແລ້ວ RFC2821 ແມ່ນການອ້າງອີງທີ່ຖືກຕ້ອງສໍາລັບຄວາມຍາວຂອງທີ່ຢູ່ອີເມວ. ຂ້ອຍພົບມັນຢູ່ທີ່ນັ້ນ, ແຕ່ບໍ່ແມ່ນຢູ່ໃນ RFC 2822.
ມີຂໍ້ຈໍາກັດໃນ RFC 2821 ກ່ຽວກັບຄວາມຍາວຂອງທີ່ຢູ່ໃນຄໍາສັ່ງ MAIL ແລະ RCPT ຂອງ 256 ຕົວອັກສອນ. ໂດຍປົກກະຕິຂອບເຂດຈໍາກັດເທິງຂອງຄວາມຍາວທີ່ຢູ່ຄວນຈະຖືກພິຈາລະນາເປັນ 256.
— ແຫຼ່ງຂໍ້ມູນ: RFC 3696 Errata
ນອກຈາກນັ້ນ, ເນື່ອງຈາກວ່າ RFC 2181 ເວົ້າວ່າ "ຊື່ໂດເມນເຕັມແມ່ນຈໍາກັດພຽງແຕ່ 255 octets", ມັນໄດ້ຖືກຕີຄວາມຜິດເລື້ອຍໆໂດຍຄົນ (ລວມທັງນັກຂຽນຂອງ RFCs ອື່ນໆ) ເຊິ່ງຫມາຍຄວາມວ່າຊື່ໂດເມນສາມາດຍາວ 255 ຕົວອັກສອນ. ແຕ່ RFC2181 ກໍາລັງເວົ້າກ່ຽວກັບການເປັນຕົວແທນລະດັບ DNS ໃນສາຍ, ບໍ່ແມ່ນຕົວອັກສອນທີ່ສາມາດພິມໄດ້.
ຄວາມຍາວສູງສຸດຂອງຊື່ໂດເມນແມ່ນ 253 ຕົວອັກສອນ (254 ລວມທັງຈຸດຕໍ່ທ້າຍ, 255 octets ໃນສາຍທີ່ມີການຢຸດ null). ແລະນັ້ນແມ່ນສິ່ງທີ່ BIND ແລະ DiG ປະຕິບັດ.
ຜູ້ພັດທະນາການປະເມີນຂະຫນາດທີ່ເປັນໄປໄດ້ຂອງທີ່ຢູ່ອີເມວໄດ້ເຮັດໃຫ້ເກີດບັນຫາເລັກນ້ອຍ: http://www.eph.co.uk/resources/email-address-le...
ຂ້າພະເຈົ້າເດົາວ່າຖ້າຫາກວ່າທີ່ຢູ່ອີເມວຂອງທ່ານແມ່ນບາງສິ່ງບາງຢ່າງຂະຫນາດນ້ອຍເຊັ່ນ "jack1983@aol.com" ທ່ານອາດຈະຄິດວ່າເຖິງແມ່ນ 30 ຕົວອັກສອນແມ່ນເອກະສານ.
ຂໍອະໄພ, URL ຂ້າງເທິງນີ້ເສຍຫາຍ...
ຜູ້ພັດທະນາການປະເມີນຂະຫນາດທີ່ເປັນໄປໄດ້ຂອງທີ່ຢູ່ອີເມວໄດ້ເຮັດໃຫ້ເກີດບັນຫາເລັກນ້ອຍ:
http://www.eph.co.uk/resources/email-address-leng...
ຂ້າພະເຈົ້າເດົາວ່າຖ້າຫາກວ່າທີ່ຢູ່ອີເມວຂອງທ່ານແມ່ນບາງສິ່ງບາງຢ່າງຂະຫນາດນ້ອຍເຊັ່ນ "jack1983@aol.com" ທ່ານອາດຈະຄິດວ່າເຖິງແມ່ນວ່າ 30 ຕົວອັກສອນແມ່ນໃຈກວ້າງຂວາງ.
ຫາກໍພົບໂພສນີ້...ຮາຮາ. ຂ້ອຍສົງໄສວ່າຕອນນີ້ຂ້ອຍສາມາດລົງທະບຽນໂດເມນນັ້ນໄດ້ບໍ lol.