2010-03-01 37 views
7

khi mọi người đăng ký vào trang web của tôi, tôi không muốn gửi cho họ email xác minh, tôi chỉ muốn kiểm tra xem email đó có tồn tại hay không. có cách nào để làm một việc như vậy không?java: làm cách nào tôi có thể xác minh địa chỉ email hợp lệ mà không gửi email xác nhận?

sử dụng apache-tomcat và java làm ngôn ngữ lập trình chính của tôi.

cảm ơn rất nhiều!

+1

Bạn không thể ép buộc bất kỳ máy chủ email nào để xác nhận rằng hộp thư hợp lệ tồn tại và ai đó xem nó. –

Trả lời

9

Bạn có thể sử dụng cao nhất regex để kiểm tra xem địa chỉ có hợp lệ về cú pháp hay không hoặc tìm kiếm MX records nếu tên miền hợp lệ, nhưng điều này vẫn không đảm bảo địa chỉ email là hợp pháp và thuộc về người đăng ký được đề cập . Có thực sự không có cách nào đáng tin cậy hơn gửi email verficiation và chờ xác nhận trong một khoảng thời gian ngắn.

+0

đây không phải là câu trả lời chính xác 100% –

+1

@fuzzy: Cũng không phải là cách đáng tin cậy 100% mà địa chỉ email thuộc về người dùng được đề cập và điều này sẽ không bao giờ xảy ra. Tôi đã kiểm tra trang web trong câu trả lời của bạn, đã nhập một số địa chỉ mà tôi biết chúng tồn tại và một số địa chỉ không thành công do máy chủ không hỗ trợ VRFY. Tôi sẽ không lãng phí nhiều thời gian để xác minh địa chỉ email ở đâu đó trên mạng. Chỉ cần gửi email xác minh và chờ xác nhận :) – BalusC

+0

bạn có thể kết nối gửi tin nhắn RCPT và sau đó trả lời nó, bạn không xem xét giải pháp của tôi thực sự làm gì. –

15

Không. Không có cách nào để biết địa chỉ email có trỏ đến đích hợp lệ hay không. Bạn có thể kiểm tra cú pháp cơ bản và miền có bản ghi DNS, nhưng đó là tất cả.

+1

Cụ thể hơn: "... có bản ghi ** MX ** trong DNS ..." – Dolph

+2

Tôi không đồng ý. Bạn có thể gửi email đến một miền không có bản ghi MX. – bmargulies

+0

bạn sẽ làm như thế nào? –

1

Nếu bạn chỉ muốn xác minh rằng nó giống như một địa chỉ email hợp lệ, có rất nhiều mẫu của Regex sẽ xác minh điều đó. Nếu bạn muốn xác minh người dùng có quyền kiểm soát địa chỉ email, bạn sẽ cần phải gửi một thứ gì đó cho nó và tạo một phản hồi duy nhất để xác minh nó.

3

Điều này đã được trả lời trong các câu hỏi trước đây tại đây. Nếu không có email xác minh, điều tốt nhất bạn có thể làm là xem địa chỉ email và xem địa chỉ có hợp lệ hay không. Bạn cũng có thể kiểm tra những thứ như tên miền, để xem nó có tồn tại không và có bản ghi MX không. Dù sao, xem https://stackoverflow.com/questions/3232/how-far-should-one-take-e-mail-address-validationUsing a regular expression to validate an email address

5

trái với một số trong những câu trả lời vô học bạn có thể thử và kết nối với một máy chủ MX và sử dụng lệnh VRFY để xem máy chủ có hỗ trợ nó không. Đây là một website sẽ làm điều này cho bạn làm ví dụ. Nếu bạn nhìn vào trao đổi của nó với máy chủ MX nó thực sự cố gắng và gửi một email nhưng thực hiện một RESET trước khi thực sự gửi nó. Thử nghiệm nó với địa chỉ email của tôi hoạt động nhưng tôi không nhận được một email. Vì vậy, có bạn CÓ THỂ làm những gì mọi người khác đang nói rằng bạn không thể làm. Sử dụng địa chỉ bạn biết làm việc cho miền của bạn, sau đó sử dụng địa chỉ mà bạn không được hỗ trợ. Bạn sẽ nhận được 550 trên lệnh RCTP TO cuối cùng. Đó là cách bạn biết nó không tồn tại.

6

Tôi chỉ muốn cân nhắc và nói rằng mặc dù bạn không muốn làm như vậy, XIN gửi email và buộc người dùng xác nhận rằng họ có quyền kiểm soát nó trước khi cho phép sử dụng địa chỉ email đó cùng với tài khoản trang web của bạn. Tại sao? Vì không làm điều đó, vì bất kỳ lý do gì, có nghĩa là người dùng có thể đăng ký tài khoản bằng địa chỉ email không phải của họ. Họ có thể vô tình làm như vậy, hoặc họ có thể làm như vậy rất nhiều mục đích (ví dụ, ký kết những người khác lên cho các tài khoản vì nhiều lý do); đó chỉ là không kosher, và các trang web cho phép nó được mở để được báo cáo cho ISP của họ.

(Tôi nói điều này là chủ sở hữu tài khoản Gmail, ít nhất hai đến ba lần một tháng, được đăng ký tài khoản tại một số trang web không bắt buộc người dùng xác nhận địa chỉ email của họ theo cách này. Đó là kích thích, và nó đặt các onus trên tôi để xóa tài khoản khỏi trang web vi phạm. Bây giờ tôi đã thực hiện khôi phục bất kỳ mật khẩu nào tôi có thể, đăng nhập vào tài khoản và sau đó thay đổi địa chỉ email thành "SOMEDUMBFUCKDOESNTKNOWHISOWNEMAILADDRESS @ gmail .com "hoặc một cái gì đó như thế ... nó khá thú vị, nhưng tôi nghi ngờ bạn muốn điều này xảy ra trên trang web của bạn.)

+4

Điểm quan trọng ở đây không phải là quá nhiều "buộc mọi người xác nhận địa chỉ email" nhưng "không gửi email đến địa chỉ chưa được xác nhận". Bạn có thể tạo tài khoản trước khi email được xác nhận, cung cấp cho bạn không gửi bất kỳ email nào (ngoài nỗ lực xác nhận) hoặc ngăn người dùng khác cố gắng xác nhận địa chỉ đó. –

+0

cảm ơn các bạn thông tin :) – ufk

1

Bạn có thể sử dụng dịch vụ openid để kiểm tra các địa chỉ email có giá trị dưới dạng stackoverflow.

http://openid.net/

0

Email Verification services rất hữu ích trong việc chứng thực địa chỉ email. Hầu hết trong số họ thực hiện 6 cấp xác minh như xác thực cú pháp, Kiểm tra bản ghi MX miền, Phát hiện tài khoản dựa trên vai trò, Phát hiện địa chỉ email dùng một lần (DEA), phát hiện theo dõi theo dõi của HoneyPot/Spam và xác minh SMTP mức sâu.

Hầu hết trong số họ cung cấp tích hợp API, vì vậy, bạn có thể xác thực trực tiếp địa chỉ email từ ứng dụng của mình.

Các vấn đề liên quan