Seguidores

segunda-feira, 15 de maio de 2023

Python - Verificar emails

 

Verificar emails com Phyton3.

import os
import csv
from verify_email import verify_email

# Pede o nome do arquivo CSV ou o caminho da pasta contendo os arquivos
caminho = input("Digite o caminho do arquivo CSV ou da pasta contendo os arquivos: ")

# Verifica se o caminho é um arquivo ou uma pasta
if os.path.isfile(caminho):
    arquivos = [caminho]
elif os.path.isdir(caminho):
    arquivos = [os.path.join(caminho, arquivo) for arquivo in os.listdir(caminho) if arquivo.endswith('.csv')]
else:
    print("Caminho inválido.")
    exit()

# Cria um arquivo para armazenar os e-mails válidos
with open('emails_validos.txt', 'w') as arquivo_saida:
    for arquivo in arquivos:
        # Abre o arquivo CSV contendo os e-mails
        with open(arquivo, 'r') as arquivo_csv:
            leitor_csv = csv.reader(arquivo_csv)

            # Ler cada linha do arquivo CSV e verificar o e-mail
            for linha in leitor_csv:
                email = linha[0]
                resultado = verify_email(email)

                # Exibir o resultado da verificação e gravar no arquivo de saída
                if resultado:
                    print(email, "é um e-mail válido.")
                    arquivo_saida.write(email + '\n')
                else:
                    print(email, "é um e-mail inválido.")

# Exibe uma mensagem informando que o processo foi concluído
print("Verificação concluída.")

Aqui está o que cada parte do código faz:

  1. import os - Importa o módulo os para trabalhar com caminhos de arquivos e pastas.
  2. caminho = input("Digite o caminho do arquivo CSV ou da pasta contendo os arquivos: ") - Pede ao usuário para digitar o caminho do arquivo CSV ou da pasta contendo os arquivos.
  3. if os.path.isfile(caminho): - Verifica se o caminho digitado é um arquivo.
  4. arquivos = [caminho] - Se for um arquivo, adiciona o caminho à lista arquivos.
  5. elif os.path.isdir(caminho): - Verifica se o caminho digitado é uma pasta.
  6. arquivos = [os.path.join(caminho, arquivo) for arquivo in os.listdir(caminho) if arquivo.endswith('.csv')] - Se for uma pasta, adiciona todos os arquivos com extensão .csv à lista arquivos.
  7. else: - Se o caminho digitado não for um arquivo ou uma pasta, exibe uma mensagem de erro e encerra o programa.
  8. with open('emails_validos.txt', 'w') as arquivo_saida: - Cria um arquivo para armazenar os e-mails válidos e o abre para escrita.
  9. arquivo_saida.write(email + '\n') - Grava o e-mail válido no arquivo de saída, seguido por uma nova linha.
  10. print("Verificação concluída.") - Exibe uma mensagem informando que o processo foi concluído.

Quanto à velocidade da verificação, a biblioteca verify_email faz uma verificação em tempo real, o que pode levar algum tempo para verificar grandes listas de e-mails.

 

 

import csv
import re
import dns.resolver

def validate_email(email):
    # Verifica se o email está em um formato válido
    pattern = re.compile(r"[^@]+@[^@]+\.[^@]+")
    if not pattern.match(email):
        return False
    
    # Obtém o domínio do email
    domain = email.split('@')[1]
    
    # Verifica se o domínio tem um registro MX
    try:
        dns.resolver.query(domain, 'MX')
    except dns.resolver.NoAnswer:
        return False
    
    return True

# Abrir o arquivo CSV contendo os e-mails
with open('lista_de_emails.csv', 'r') as arquivo_csv:
    leitor_csv = csv.reader(arquivo_csv)

    # Ler cada linha do arquivo CSV e verificar o e-mail
    for linha in leitor_csv:
        email = linha[0]
        resultado = validate_email(email)

        # Exibir o resultado da verificação
        if resultado:
            print(email, "é um e-mail válido.")
        else:
            print(email, "é um e-mail inválido.")


Neste exemplo, a função validate_email é utilizada para verificar cada e-mail da lista lida do arquivo CSV. O resultado da verificação é então impresso no console. Você pode modificar o código para imprimir os e-mails válidos em um arquivo, como você mencionou anteriormente.




import os
import re
import csv
import socket

def is_valid_email(email):
    """Verifica se um e-mail é válido usando regex e DNS lookup"""
    # Validar sintaxe do email usando regex
    regex = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    if not re.match(regex, email):
        return False

    # Verificar se o domínio existe
    try:
        domain = email.split('@')[1]
        socket.gethostbyname(domain)
    except:
        return False

    return True

# Perguntar o nome do arquivo de entrada
while True:
    input_file = input("Digite o nome do arquivo contendo a lista de e-mails: ")
    if not os.path.isfile(input_file):
        print("Arquivo não encontrado. Tente novamente.")
    else:
        break

# Perguntar o nome do arquivo de saída
output_file = os.path.splitext(input_file)[0] + ".validos.csv"

# Abrir o arquivo CSV contendo os e-mails
with open(input_file, 'r') as arquivo_csv, open(output_file, 'w', newline='') as output_csv:
    leitor_csv = csv.reader(arquivo_csv)
    escritor_csv = csv.writer(output_csv)

    # Ler cada linha do arquivo CSV e verificar o e-mail
    for linha in leitor_csv:
        email = linha[0]
        resultado = is_valid_email(email)

        # Escrever o email válido no arquivo de saída
        if resultado:
            escritor_csv.writerow([email])
            print(email, "é um e-mail válido.")

print("Verificação de e-mails concluída. E-mails válidos foram salvos em", output_file)
 

Nessa nova versão, o usuário é perguntado pelo nome do arquivo de entrada contendo a lista de e-mails. Depois, o programa assume que o arquivo de saída terá o mesmo nome, mas com ".validos.csv" adicionado ao final.

O arquivo de saída é criado e aberto em modo de escrita. Cada e-mail válido encontrado é adicionado ao arquivo de saída usando o writerow do módulo csv.

Ao final da execução, o programa exibe uma mensagem informando o nome do arquivo de saída onde os e-mails válidos foram salvos.

 "capaz de verificar a sintaxe dos endereços de e-mail e fazer uma 
verificação básica de conectividade para determinar se o servidor de 
e-mail está disponível"


Busca emails dentro dos arquivos.

import csv
import os

def verificar_email_em_arquivos(pasta):
    arquivos_csv = [arquivo for arquivo in os.listdir(pasta) if arquivo.endswith('.csv')]

    email_procurado = input("Digite o e-mail que deseja procurar: ")
    encontrado = False

    for arquivo in arquivos_csv:
        caminho_arquivo = os.path.join(pasta, arquivo)

        with open(caminho_arquivo, 'r') as arquivo_csv:
            leitor_csv = csv.reader(arquivo_csv)

            for linha in leitor_csv:
                if email_procurado in linha:
                    print(f"O e-mail {email_procurado} foi encontrado no arquivo {arquivo}.")
                    encontrado = True
                    break

    if not encontrado:
        print(f"O e-mail {email_procurado} não foi encontrado em nenhum arquivo CSV na pasta {pasta}.")

# Exemplo de uso
pasta_dos_arquivos = '.'

verificar_email_em_arquivos(pasta_dos_arquivos)




Nenhum comentário:

Postar um comentário

Ultimas Visualizações.