Topic: [Risolto]Programma per verificare esistenza di un indirizzo email.  (Letto 1317 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline JKwest

  • python habilis
  • **
  • Post: 87
  • Punti reputazione: 0
    • Mostra profilo
Salve a tutti. Come da titolo vorrei scrivere un programma per verificare se un indirizzo email sia realmente esistente o sia inventato. Tralasciando l'implementazione del codice generale, volevo sapere quali moduli python potrebbero servirmi e la loro relativa documentazione da studiare.
Grazie mille in anticipo a tutti.  :)
« Ultima modifica: Ottobre 07, 2011, 17:39 da JKwest »

Offline Python

  • python sapiens sapiens
  • ******
  • Post: 2.045
  • Punti reputazione: 2
  • Radon - Cyclomatic Complexity of your Python code
    • Mostra profilo
    • Radon - Cyclomatic Complexity of your Python code
Re: Programma per verificare esistenza di un indirizzo email.
« Risposta #1 il: Ottobre 07, 2011, 16:57 »
L'amico Google ha trovato:
https://gist.github.com/47987

Offline JKwest

  • python habilis
  • **
  • Post: 87
  • Punti reputazione: 0
    • Mostra profilo
Re: Programma per verificare esistenza di un indirizzo email.
« Risposta #2 il: Ottobre 07, 2011, 17:38 »
L'amico Google ha trovato:
https://gist.github.com/47987

Avevo chiesto dei suggerimenti sui moduli da usare, prossibili modi di implementare questo tipo di codice, qualcosa su cui studiare il problema....non pensavo esistesse un programma già pronto da usare. Sei un grande Python! Grazie.  :ok:
Ora lo studio per vedere come funziona.

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.447
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: Programma per verificare esistenza di un indirizzo email.
« Risposta #3 il: Ottobre 07, 2011, 17:44 »
Avevo chiesto dei suggerimenti sui moduli da usare, prossibili modi di implementare questo tipo di codice, qualcosa su cui studiare il problema....non pensavo esistesse un programma già pronto da usare. Sei un grande Python! Grazie.  :ok:
Ora lo studio per vedere come funziona.

Comincia dal commento in testa...

Offline Python

  • python sapiens sapiens
  • ******
  • Post: 2.045
  • Punti reputazione: 2
  • Radon - Cyclomatic Complexity of your Python code
    • Mostra profilo
    • Radon - Cyclomatic Complexity of your Python code
Re: [Risolto]Programma per verificare esistenza di un indirizzo email.
« Risposta #4 il: Ottobre 08, 2011, 14:12 »
Oops non l'avevo letto il commento!  Beh vediamo se gli va bene lo stesso. Non credi ci siano tanti altri modi per fare quello che vuole.

Offline riko

  • python deus
  • *
  • moderatore
  • Post: 7.447
  • Punti reputazione: 12
    • Mostra profilo
    • RiK0 Tech Temple
Re: [Risolto]Programma per verificare esistenza di un indirizzo email.
« Risposta #5 il: Ottobre 08, 2011, 17:34 »
Oops non l'avevo letto il commento!  Beh vediamo se gli va bene lo stesso. Non credi ci siano tanti altri modi per fare quello che vuole.

In realta' non ce ne sono affatto.

Offline JKwest

  • python habilis
  • **
  • Post: 87
  • Punti reputazione: 0
    • Mostra profilo
Re: [Risolto]Programma per verificare esistenza di un indirizzo email.
« Risposta #6 il: Ottobre 09, 2011, 00:17 »
Ci tengo a precisare che il mio interesse per questo tipo di programma non è orientato ai fini di spamm. Semplicemete in questi giorni ho notato su internet molti siti che offrivano questo servizio e mi interessava sapere come operavano. Una curiosità puramente didattica.
Grazie a tutti dei consiglli.

Offline marcus72

  • python unicellularis
  • *
  • Post: 24
  • Punti reputazione: 0
    • Mostra profilo
[Ri-aperto]Programma per verificare esistenza di un indirizzo email.
« Risposta #7 il: Settembre 02, 2018, 22:57 »
Non so se si possa rispondere a distanza di anni, ma lo script in https://gist.github.com/47987 cioè smtpcheck.py non funziona più! Mi dà un errore di sintassi del comando docmd (gli ho dato da controllare il mio indirizzo su gmail.com):
Checking address with "alt2.gmail-smtp-in.l.google.com".
MAIL FROM command returned 555: b'5.5.2 Syntax error. cb1-v6si17092019plb.128 - gsmtp'
RCPT TO command returned 503: b'5.5.1 MAIL first. cb1-v6si17092019plb.128 - gsmtp'

Ho cercato e ricercato ma alzo bandiera bianca. Lavoro in un ufficio, e poter controllare una email senza dover mandare un messaggio mi sarebbe servito (capita che quando un cliente ti dà la sua email dal vivo, o la lascia scritta a penna su un fogliettino, magari non si legge bene, o si è sbagliato qualcosa, e proprio quando poi serve, non va; così si è costretti a telefonare... poterla controllare "al volo" sarebbe stato comodo).
« Ultima modifica: Settembre 12, 2018, 11:18 da marcus72 »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.821
  • Punti reputazione: 9
    • Mostra profilo
Re:[Risolto]Programma per verificare esistenza di un indirizzo email.
« Risposta #8 il: Settembre 05, 2018, 20:06 »
Mah, quello script a occhio e croce sembra un bel po' barcollante fin dal principio.
Detto questo, l'email checking è un fatto complicato, e non a caso esistono servizi a pagamento per fare questa cosa. Come potrai trovare da qualsiasi parte, bombardare i server di richieste per verificare gli indirizzi a (non molto) lungo andare ti causa un bel flag come spammatore, e a quel punto sei bello che bloccato.

> Ho cercato e ricercato

Mah... non è proprio difficile trovare buoni articoli sull'argomento in rete. Per esempio, puoi seguire questo ragionamento e farti (copiarti) un tuo scriptino da provare:
https://www.scottbrady91.com/Email-Verification/Python-Email-Verification-Script

Offline marcus72

  • python unicellularis
  • *
  • Post: 24
  • Punti reputazione: 0
    • Mostra profilo
Re:[Risolto]Programma per verificare esistenza di un indirizzo email.
« Risposta #9 il: Settembre 08, 2018, 18:28 »
Mah... non è proprio difficile trovare buoni articoli sull'argomento in rete. Per esempio, puoi seguire questo ragionamento e farti (copiarti) un tuo scriptino da provare:
https://www.scottbrady91.com/Email-Verification/Python-Email-Verification-Script

Purtroppo pare che funzioni solo per controllare indirizzi email di google... Sia hotmail.com che libero.it chiudono la connessione prima di arrivare a comunicare l'email che voglio controllare...

Comunque credo che per essere bloccato bisognerà fare almeno una decina di controlli consecutivi... L'uso reale dovrebbe essere di un controllo al mese, o al massimo uno a settimana. Tra l'altro ho già implementato una cache su file, per cui se chiedo un'email già controllata, la risposta viene presa da là. Ovviamente avrei implementato un timeout di qualche mese, ma è inutile perderci altro tempo se prima non trovo una procedura funzionante.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.821
  • Punti reputazione: 9
    • Mostra profilo
Re:[Risolto]Programma per verificare esistenza di un indirizzo email.
« Risposta #10 il: Settembre 10, 2018, 14:38 »
Eh beh, se il tuo IP è in una blacklist di Libero (per dire) è chiaro che Libero ti stronca. Dovresti controllare il log del server smtplib per capire che cosa succede in pratica...

Detto questo,

> L'uso reale dovrebbe essere di un controllo al mese, o al massimo uno a settimana.

Ma se la necessità è così occasionale, non fai prima a mandarla, questa benedetta email?

Offline marcus72

  • python unicellularis
  • *
  • Post: 24
  • Punti reputazione: 0
    • Mostra profilo
Re:[Risolto]Programma per verificare esistenza di un indirizzo email.
« Risposta #11 il: Settembre 12, 2018, 11:17 »
Eh beh, se il tuo IP è in una blacklist di Libero (per dire) è chiaro che Libero ti stronca. Dovresti controllare il log del server smtplib per capire che cosa succede in pratica...
Potresti dirmi, per sommi capi, come fare?

> L'uso reale dovrebbe essere di un controllo al mese, o al massimo uno a settimana.

Ma se la necessità è così occasionale, non fai prima a mandarla, questa benedetta email?
Il fatto è che sto facendo un'applicazione da usare in ufficio, e questa funzione del controllo dell'email sarebbe la ciliegina sulla torta. Scrivere una email e, in due secondi, sapere se esiste è molto diverso da aprire il client di posta, scrivere l'indirizzo email, un saluto (perché qualcosa bisognerà pur scriverla al cliente....), inviare, e poi aspettare 10 secondi per vedere se torna indietro... Anche se questa cosa si può fare, praticamente non si fa mai (per pigrizia o per mancanza di tempo).

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.821
  • Punti reputazione: 9
    • Mostra profilo
Re:[Risolto]Programma per verificare esistenza di un indirizzo email.
« Risposta #12 il: Settembre 12, 2018, 16:26 »
> Potresti dirmi, per sommi capi, come fare?

Beh, non è che ci siamo molto da dire... smtplib ha un log che puoi leggere... di solito il log è pubblicato nello standard output, quindi se lavori nella shell interattiva lo vedi e basta... ma naturalmente puoi redirezionare l'output verso un file, o quello che vuoi.

Del resto, non so... dipende dal server che usi suppongo. Per esempio, se uso il mio server di google vedo che riesco senza problemi ad autenticare una email di libero:


>>> import smtplib
>>> server = smtplib.SMTP()
>>> server.connect('smtp.gmail.com', 587)
(220, b'smtp.gmail.com ESMTP v21-v6sm2208135wrd.4 - gsmtp')
>>> server.ehlo()
(250, b'smtp.gmail.com at your service, [xxx.xxx.xxx.xxx]\nSIZE 35882577\n8BITMIME\nSTARTTLS\nENHANCEDSTATUSCODES\nPIPELINING\nCHUNKING\nSMTPUTF8')
>>> server.starttls() # se non apri una connessione sicura il login poi non funziona...
(220, b'2.0.0 Ready to start TLS')
>>> # nota: questo metodo di login "non sicuro" funziona solo mettendo su "on" questo setting:
>>> # https://myaccount.google.com/lesssecureapps
>>> # in alternativa, occorre generare una "app password" o connettersi con le api di oauth suppongo
>>> server.login('il_mio_account@gmail.com', 'la_mia_password')
(235, b'2.7.0 Accepted')
>>> server.mail('me@me.com') # non importa quale...
(250, b'2.1.0 OK v21-v6sm2208135wrd.4 - gsmtp')
>>> server.rcpt('xxxxx@libero.it') # un indirizzo che so che esiste
(250, b'2.1.5 OK v21-v6sm2208135wrd.4 - gsmtp')
>>> # 250: ecco fatto, verificato!
>>> server.quit()


Ovviamente, non ho idea di quale server usi tu, e di come reagisce Libero... ma appunto, dipende dai casi.


> Sto facendo un'applicazione da usare in ufficio, e questa funzione del controllo dell'email sarebbe la ciliegina sulla torta.
> Scrivere una email e, in due secondi, sapere se esiste....

Boh? Posso azzardare un parere così senza pensarci troppo? Questo è creeping featurism, stai sovra-ingegnerizzando la tua applicazione. L'email verification ha senso tipicamente nel caso di mailing list di decine di migliaia di indirizzi, quando non vuoi rischiare di avere centinaia di errori in una spedizione di mass mailing fatta in casa (e non vuoi rischiare perché, di solito, quando hai un rapporto troppo elevato tra invii ed errori, il tuo server comincia a insospettirsi e a flaggarti). Dopo di che, anche in questo scenario, conviene usare un servizio apposito (tipo Email Hippo, appunto) perché non è che mettersi a pingare migliaia di volte i server sia comunque una buona idea.
Ma se invece si tratta di una email ogni tanto, allora davvero, ma che ti importa? Di solito in questi scenari l'indirizzo è giusto, perché deriva da una email ricevuta o altre sorgenti "controllate". Se poi fosse sbagliato, alla prima emal che gli mandi ti accorgi del problema e vedi il da farsi.

« Ultima modifica: Settembre 12, 2018, 16:29 da RicPol »