Amazing-Python-Scripts

Форк
0
/
email_verification.py 
66 строк · 1.8 Кб
1
from dns import resolver
2
import smtplib
3
import socket
4
import re
5

6
# FIRST CHECK
7

8

9
def check_syntax(email):
10
    regex = r'^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$'
11
    if (re.search(regex, email)):
12
        print("Check 1 (Syntax) Passed")
13
    else:
14
        print("Check 1 FAILED! Bad Syntax, Invalid Email!")
15
        exit()
16

17
# SECOND CHECK
18

19

20
def check_dns(email, domain):
21
    try:
22
        records = resolver.resolve(domain, 'MX')
23
        mxRecord = str(records[0].exchange)
24
        print("Check 2 (DNS -", mxRecord+") Passed")
25
        return mxRecord
26
    except:
27
        print("Check 2 FAILED! The domain", domain,
28
              "does not exist, Invalid Email!")
29
        exit()
30

31
# THIRD CHECK
32

33

34
def check_response(email, domain, mxRecord):
35
    try:
36
        # Get local server hostname
37
        host = socket.gethostname()
38

39
        # SMTP lib setup (use debug level for full output)
40
        server = smtplib.SMTP()
41
        server.set_debuglevel(0)
42

43
        # SMTP Conversation
44
        server.connect(mxRecord)
45
        server.helo(host)
46
        server.mail(email)
47
        code, message = server.rcpt(str(email))
48
        server.quit()
49

50
        # Assume 250 as Success
51
        if code == 250:
52
            print("Check 3 (SMTP response) Passed")
53
            print(email, "is a VALID email address!")
54
        else:
55
            print("Check 3 FAILED! The user", email.split(
56
                "@")[0], "does not exist, Invalid Email!")
57
    except socket.error as socketerror:
58
        print("Check 3 HALTED! The domain", domain,
59
              ", either does not have an SMTP or have restricted access through external scripts")
60

61

62
email = input("Enter your Email id :")
63
domain = email.split("@")[-1]
64
check_syntax(email)  # CHECK1
65
mxRecord = check_dns(email, domain)  # CHECK2
66
check_response(email, domain, mxRecord)  # CHECK3
67

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.