Độ dài Địa chỉ Email Hợp lệ

Ký gửi 1948865 s

Tôi đã phải đào một số ngày hôm nay để tìm nó, nhưng bạn có biết độ dài hợp lệ của một địa chỉ email là bao nhiêu không? Nó thực sự được chia thành nhiều phần… Name@Domain.com. Đây là theo RFC2822.

  1. Tên có thể từ 1 đến 64 ký tự.
  2. Miền có thể từ 1 đến 255 ký tự.

Chà… điều đó có nghĩa là đây có thể là một địa chỉ email hợp lệ:


loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc @ loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPhesiaesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratcaPhasellusatin
ciduntaturpisaduis.com

Hãy thử lắp nó vào danh thiếp! Trớ trêu thay, hầu hết các trường địa chỉ email được giới hạn trong 100 ký tự trên web. Điều đó thực sự không hợp lệ. Nếu bạn muốn xác thực địa chỉ email để xây dựng phù hợp bằng cách sử dụng PHP, tôi đã tìm thấy đoạn mã này trên mạng:

http://derrick.pallas.us/email-validator/ # Giấy phép: Giấy phép Miễn phí Học thuật 2.1 # Phiên bản: 2006-12-01a if (! 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)) trả về false; list ($ local, $ domain) = split ("@", $ email, 2); if (strlen ($ local)> 64 || strlen ($ domain)> 255) return false; if ($ check &&! gethostbynamel ($ domain)) trả về false; trả về true; # KẾT THÚC ###### }

9 Comments

  1. 1
  2. 2

    Có, tôi cũng nhận thấy sự thiếu tuân thủ của các giải pháp khác với RFC. Tuy nhiên, tôi đã nhận thấy rằng ngay cả regex này cũng không điển hình và không phải là tiêu chuẩn. Tôi nhớ việc đọc regex thực tế (cho phép <,>, v.v.) là quá chuyên sâu đối với hầu hết các quy trình.

    Tuy nhiên, nó được viết ngắn gọn và chắc chắn là một giải pháp có thể chấp nhận được đối với bất kỳ ứng dụng email doanh nghiệp nào.

    Cảm ơn, một lần nữa!
    Doug

  3. 3

    Thật không may, tôi đã liên kết trang đó với RFC sai (2821 thay vì 2822) nhưng điều đó đã được sửa chữa. Dấu ngoặc nhọn không được là một phần của phần cục bộ hoặc miền của địa chỉ email; thay vào đó, chúng đại diện cho các điểm mã hóa, tức là chúng có thể được sử dụng để bao quanh một địa chỉ email (ví dụ như trong trình đọc thư của bạn) một cách chính xác vì chúng không thể là một phần của địa chỉ.

    Một điều mà chức năng của tôi không làm là lo lắng về dạng địa chỉ email được trích dẫn - nơi phần cục bộ xuất hiện trong dấu ngoặc kép - bởi vì RFC2821 về cơ bản nói rằng không ai phải viết địa chỉ của họ theo cách đó. (Tôi tin rằng biểu mẫu này là để tương thích ngược và bây giờ là một phương pháp không tốt.)

  4. 4

    Trên thực tế RFC2821 LÀ tham chiếu chính xác cho độ dài địa chỉ email. Tôi đã tìm thấy nó ở đó, nhưng không phải trong RFC 2822.

  5. 5

    Có một hạn chế trong RFC 2821 về độ dài của một địa chỉ trong lệnh MAIL và RCPT là 256 ký tự. Giới hạn trên về độ dài địa chỉ thường được coi là 256.

    - Nguồn: RFC 3696 Errata

    Ngoài ra, vì RFC 2181 cho biết “Tên miền đầy đủ được giới hạn ở 255 octet”, nên nó nhiều lần bị mọi người (bao gồm cả người viết các RFC khác) hiểu sai, nghĩa là tên miền có thể dài 255 ký tự. Nhưng RFC2181 đang nói về biểu diễn cấp độ giao thức DNS trên dây, không phải các ký tự có thể in được.

    Độ dài tối đa của một tên miền là 253 ký tự (254 bao gồm dấu chấm ở cuối, 255 octet trên dây với phần cuối là null). Và đó là những gì BIND và DiG thực hiện.

  6. 6
  7. 7
  8. 8

Bạn nghĩ gì?

Trang web này sử dụng Akismet để giảm spam. Tìm hiểu cách xử lý dữ liệu nhận xét của bạn.