Làm thế nào để kiểm tra xem một địa chỉ email có tồn tại không?


26

Tôi đang cố kiểm tra 2.000 địa chỉ email để xem chúng có tồn tại không. Có cách nào để kiểm tra xem một địa chỉ email có hợp lệ không mà không gửi email đến từng địa chỉ?.

Tôi tìm thấy một dịch vụ trực tuyến Email Unlimited , nhưng nó chỉ kiểm tra 20 địa chỉ email trước khi phải mua phiên bản đầy đủ.

Câu trả lời:


37

Chỉ vì lợi ích của sự hoàn chỉnh: một số máy chủ SMTP làm cho biết nếu một địa chỉ email tồn tại. Sau một ví dụ đầy đủ trong một câu trả lời khác :

telnet gmail-smtp-in.l.google.com 25

helo example.com
mail from: <me@example.com>
rcpt to: <somenonexistinguser@gmail.com>
550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipient's email address for typos or
550-5.1.1 unnecessary spaces. Learn more at
550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596

Khi thành công và trên các máy chủ không thể hoặc không muốn biết địa chỉ có hợp lệ hay không, lệnh cuối cùng sẽ mang lại:

250 2.1.5 OK

Người ta có thể chỉ cần gọi quitmà không cần gửi bất kỳ email nào. Tuy nhiên, khi thử nhiều địa chỉ, điều này cũng có thể khiến bạn bị chặn.

(Gmail không hỗ trợ vrfylệnh. Trên trang web, nó cũng có nút "kiểm tra tính khả dụng" khi đăng ký tài khoản Gmail mới. Điều đó cũng có thể cung cấp cho bạn một số thông tin, nhưng địa chỉ cũ sẽ không khả dụng trong một thời gian.)


1
SMTP định nghĩa VRFYlệnh cho mục đích này.
grawity

@grawity, điều đó có thể đúng trong lý thuyết, nhưng VRFYKHÔNG hoạt động với Gmail. (Xem bình luận của tôi tại câu trả lời của Michael .)
Arjan

2
Không phải tất cả các máy chủ phản hồi với lỗi "không tồn tại" đối với các tài khoản bị thiếu, vì vậy điều này không hoàn toàn đáng tin cậy. Nếu máy chủ là proxy (và / hoặc máy chủ thứ cấp bên ngoài) cho một số máy chủ khác thì có thể không biết tài khoản nào hợp lệ trong lần nhảy tiếp theo, vì vậy sẽ cung cấp "250 OK" cho bất kỳ điều gì và một số máy chủ được đặt theo cách này để ngăn chặn những kẻ gửi thư rác cố gắng liệt kê các tài khoản hợp lệ. Một thử nghiệm nhanh về một số máy chủ mail của khách hàng của chúng tôi cho thấy 1 trong số 5 tôi đã thử không đưa ra phản hồi 5xx cho tài khoản không tồn tại.
David Spillett

(@David, tôi biết. Đó là lý do tại sao tôi sử dụng từ "một số" ở trên ... Nhưng tôi đã nhấn mạnh một chút.)
Arjan

@Arjan Tôi đã viết một tập lệnh python nhỏ để tự động hóa gist.github.com/arulrajnet/c613bd0fad5de00bab2e
Arul

23

Nếu điều này là có thể, những kẻ gửi thư rác trên toàn thế giới sẽ hát với niềm vui.

Xin lỗi nhưng không, không thể biết liệu có địa chỉ email cụ thể nào tồn tại hay không.

Theo tôi, đây là một tính năng!

  • Nếu bạn biết phóng viên của mình, thì bạn sẽ biết thông tin liên lạc của họ.
  • Nếu bạn không biết các phóng viên của mình, thì bạn là người lạ và họ sẽ không đánh giá cao việc nhận thư không mong muốn từ bạn.
  • Nếu bạn đã từng biết các phóng viên của mình và họ không thông báo cho bạn về việc thay đổi địa chỉ của họ, thì họ đã đưa ra quyết định có ý thức (không?) Để không nhận thư của bạn.

Điều tốt nhất bạn có thể làm là gửi e-mail đến danh sách của bạn và sau đó xóa những thư bị trả lại (= những thư không thể gửi được).

Hãy cẩn thận! Ở một số quốc gia, việc gửi e-mail số lượng lớn không được yêu cầu cho những người không cho phép trước điều này là bất hợp pháp.


Cảm ơn vì điều đó. Nhưng vâng, chúng tôi biết các liên hệ nhưng một số người trong số họ đã không cập nhật chi tiết liên hệ của họ với chúng tôi khi họ thay đổi vị trí hoặc công ty. Chúng tôi đã gửi bản tin thời gian qua và nó trả lại địa chỉ email và tài khoản của chúng tôi đã được kích hoạt lại do tỷ lệ cao của các email bị trả lại. Tôi tìm thấy một cái trên internet nhưng không chắc nó có đáng tin hay không: verify-email.org
tintincutes

2
+1 - nếu nó hoạt động, nó sẽ nhanh chóng bị lạm dụng. Đây là lý do tại sao chúng ta không thể có những điều tốt đẹp!
David Spillett

2
Không chắc chắn tại sao điều này được nâng cao mạnh mẽ. Bài học đạo đức 101? Tôi đã thấy một cái gì đó giống như những gì OP muốn được sử dụng, và thậm chí không nhằm mục đích bất chính. Các câu trả lời và nhận xét khác cho thấy có thể có nhiều máy chủ thư, đặc biệt là công ty / không phải Google.
Daniel Beck

1
@Daniel: chắc chắn là có thể đối với một số ( nhiều , trên thực tế) các máy chủ / dịch vụ thư - nhưng nó không đáng tin cậy và cũng không nhất thiết đáng tin cậy cho bất kỳ địa chỉ nào. Tôi đã bình chọn cho sự đúng đắn về kỹ thuật của "bạn không thể biết chắc chắn" hơn là bất kỳ khía cạnh đạo đức nào.
David Spillett

1
Những người được sử dụng làm người gửi thư rác giả mạo sẽ không hài lòng về "tính năng" này khi nhận được nhiều thông báo ngược . (Ngoài các tin nhắn trả lại thỉnh thoảng từ các lần chạy mà sử dụng một khác nhau From, Reply-tohoặc Return-Path. Cho mỗi tin nhắn, tôi đã nhận được hàng ngàn thông điệp thư bị trả lại hai lần một cách dễ dàng lọc, vẫn không phải là rất tốt đẹp.)
Arjan

7

Thực sự không có cách nào tốt để làm như vậy. Có một lệnh 'VRFY' trong giao thức SMTP, nhưng tôi không biết ai cho phép nó hoạt động nữa - nó quá hữu ích cho những kẻ gửi thư rác. Hầu hết các máy chủ sẽ chỉ từ chối lệnh nữa.

Điều tốt nhất bạn có thể làm ngay bây giờ là gửi e-mail và ghi lại những gì bị trả lại (lưu ý rằng một số máy chủ thư sẽ chỉ là lỗ đen thư không gửi được thay vì gửi lại).

Tôi không biết mục đích kinh doanh hoặc mục đích của bạn là gì với danh sách này, nhưng bạn nên biết rằng nếu bạn gửi e-mail tới 2000 người cùng một lúc, bạn có thể bị một số người gửi thư bị gắn cờ là người gửi thư rác.


1
Có lẽ giống như xóa một danh sách liên lạc. Thư bị trả lại nào.
Daniel Beck

Cố gắng để làm sạch danh bạ; Tôi cần thiết kế một cơ sở dữ liệu danh bạ mới. Chúng tôi có rất nhiều khách hàng từ các công ty khác nhau, không chắc tôi có phải phân loại chúng trong một cơ sở dữ liệu hay sẽ tạo một DB khác nhau cho các công ty khác nhau. Điều gì sẽ là cách tốt nhất?
tintincutes

Nếu tôi hiểu chính xác, thì vrfy sẽ cần một tên người dùng , không phải địa chỉ email? Nếu đúng, thì tôi đoán nó chủ yếu bị vô hiệu hóa vì lý do bảo mật, không phải để chống lại những kẻ gửi thư rác? Trên Gmail, cả hai vrfy existinguser, vrfy existinguser@gmail.com, vrfy someunknownuservrfy someunknownuser@gmail.comtất cả năng suất 252 2.1.5 Send some mail, I'll try my best, trong khi trên rất giống Gmail rcpt to: không tiết lộ nếu một địa chỉ email có giá trị.
Arjan

Với vrfy, bạn kết nối với máy chủ thư, sau đó là tên người dùng vrfy (phần trước @ trong địa chỉ email). Nếu nó hoạt động, nó sẽ cho bạn biết có hay không người dùng có thật hay không. Nếu nó không hoạt động (nhiều người không) thì nó sẽ nói 'bị cấm' hoặc 'Tôi không có ý kiến ​​gì'. Lưu ý rằng câu trả lời 'Tôi không có ý tưởng' là hoàn toàn hợp pháp đối với máy chủ chuyển tiếp thư không có quyền truy cập vào danh sách tài khoản dưới mức. Vì vậy, ngay cả khi làm việc, vrfy có thể không hữu ích.
Michael Kohne

2

Không thể xác định chính xác liệu một địa chỉ có thật hay không - bất kỳ sản phẩm nào tuyên bố rằng nó có thể làm tăng khả năng của nó, vì vậy bạn nên cân nhắc mọi khiếu nại khác được đưa ra bằng con mắt hoài nghi.

Có những thư viện F / OSS tồn tại có thể làm được nhiều nhất có thể: Tôi đoán rằng hầu hết các phần mềm trên thị trường chỉ là một trình bao bọc lạ mắt xung quanh chúng để bạn có thể dễ dàng tạo ra thứ tốt / xấu của mình nếu bạn có bất kỳ kinh nghiệm mã hóa. Nhưng hãy nhớ rằng cho dù thói quen xác nhận tốt đến đâu thì nó cũng sẽ rất dễ đưa ra kết quả âm tính giả và âm tính giả.

Ví dụ, http://freshmeat.net/projects/emailaddressvalidationcomponent xuất hiện trên một tìm kiếm nhanh cho tươi và giả sử mô tả là chính xác, mọi thứ thực sự có thể được thực hiện để thử xác minh địa chỉ.


@DanieL: Ok cảm ơn vì điều này. Cái này thì sao? Cái này cũng hợp lệ phải không: techie-buzz.com/how-to/ từ
tintincutes

@tintincute: có vẻ khá hợp lệ, nguồn Lifehacker của tôi sử dụng cùng một video ...
studiohack


1

Trong bối cảnh công ty, điều này có thể được thực hiện bằng cách tự động hóa tra cứu trong thư mục Active.


1

Làm thế nào về việc viết một kịch bản Perl để tự động hóa công việc này? Hãy xem cái này: http://search.cpan.org/~ilyam/Mail-CheckUser-1.21/CheckUser.pm


Điều này thực sự sử dụng các lệnh SMTP để kết nối với máy chủ SMTP và nếu bạn thực hiện quá nhiều yêu cầu quá sớm, bạn có thể bị gắn nhãn là người gửi thư rác và bị chặn. Vì vậy, không tốt cho việc kiểm tra hàng ngàn email.
Bulrush

1

Bạn có thể thử: http://verify-emails.com/

Nó vẫn là một dịch vụ thử và mua, nhưng nó có thể xử lý các danh sách cũng như các email đơn lẻ và có thể được kết hợp vào các biểu mẫu đăng ký.


Tên miền đó là để bán hàng. Trang web đã chết.
Bulrush

1

Tôi cũng cần một cách để xác minh sự tồn tại của địa chỉ email, vì vậy tôi đã kết thúc việc viết tiện ích nhỏ của riêng mình. (Con trăn)

http://github.com/un33k/python-emailahoy

Nó chính xác 100% khi nhà cung cấp trung thực với bạn.
(gmail khá trung thực, nhưng yahoo KHÔNG phải vì nó nói có với tất cả các email.)

Nó tốt hơn là không có gì, vì nó đã giảm hơn 50% thư rác cho tôi.


0

Có thể kiểm tra xem một địa chỉ email có tồn tại hay không bằng cách sử dụng liên kết này: http://verify-email.org/ . Nó ping địa chỉ email và trả lời Oknếu email tồn tại và Badnếu email là giả hoặc không tồn tại. thêm một liên kết hữu ích cho vấn đề này: http://www.shoutmeloud.com/how-to-verify-if-email-address-exist-or-not.html


Liên kết thứ nhất: có vẻ như việc kiểm tra các địa chỉ đơn lẻ là miễn phí, nhưng kiểm tra 2000, như được hỏi trong câu hỏi, yêu cầu phần mềm phải trả tiền. Đó là tình huống mà câu hỏi tìm kiếm một giải pháp thay thế, vì vậy đây không thực sự là một giải pháp cho câu hỏi. Liên kết thứ 2 cũng liên quan đến kiểm tra duy nhất. Super User không phải là một diễn đàn, nơi thường để lại bất cứ thứ gì thường liên quan đến chủ đề. Mục đích của nó là xây dựng một kiến ​​thức, và mỗi câu trả lời sẽ cung cấp một giải pháp cho những gì được hỏi. Câu trả lời không có xu hướng thu hút downvote.
sửa chữa1234
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.