Validità indirizzo email

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
Salve,
esiste un modo per verificare che una casella email sia attiva o no?

Ho un piccola mailing-list, inviata tramite PHPMailer, vorrei evitare che vengano inviate email a caselle che sono non attive o 'over quota'.

Ho letto che c'è un modo per testarla via telnet, tramite il comando nslookup ma non mi viene riconosciuto.

Oppure ho trovato questa classse PHP SMTP Email Validation (code.google.com/p/php-smtp-email-validation/), qualcuno di voi la conosce? Provata?
Leggo che è possibile inviare più indirizzi mail, la funzione pensa a raggruppare quelli con lo stesso dominio così da effettuare una sola richiesta SMTP.
Ma "molti" secondo voi quanti sono?
Vi spiego: nel mio portale turistico ho 2600 iscritti, posso inviare periodicamente la richiesta di verifica di 2600 iscritti?

Suggerimenti?

Grazie!
 

maxk

Nuovo Utente
13 Dic 2013
1
0
0
Sembra molto interessante, secondo voi può essere richiamata molte volte in un arco di tempo breve?

Ciao, sono l'autore di quello script... non ci sono limiti di richieste ne di tempo, se non i limiti del server dove metterai lo script e i tempi di latenza tecnici per la risposta del server remoto.
 

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
Un'informazione: per il server che riceve la richiesta e come se gli stessi inviando una mail?

Non vorrei che sommasse la mia richiesta più l'invio delle mail considerandomi come SPAM.

Grazie.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ho provato i software suggeriti da "criric", entrambi funzionano bene, ho verificato mail sia aziendali che non,
la curiosità viene dalla solita nostra Telecom,
verificato un indirizzo mail di tin.it da alice.it come sender, collegato alla adsl alice casa (IP Telecom) risultato
550 mail not accepted from blacklisted IP address [IP.IP.IP.IP]
[email protected] is invalid The email addresses you entered is not valid
un altro mistero misterioso della Telecom
saluti
Marino

ps lo stesso indirizzo tin.it viene verificato passando da un alias (ovvero viene verificato l'alias)
 
Ultima modifica:

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
Non so se è il posto giusto, ma volevo condividere una mia riflessione.
Molto semplicemente credo sia inutile eseguire tutta questa caterva di controlli che rischiano solo di bloccare utenti che fanno soltanto uso di mail provider che, magari, gestiscono le caselle di alias in un modo non proprio verificabile (vedi esempio @tin.it), anche perché servizi di mail temporanee come 10minutemail sono ormai ingrado di superare da un pò di tempo questo tipo di controlli e le blacklist servono a poco se non sono continuamente aggiornate.

Chiaro, dipende dalle esigenze, ma se si vuol evitare di ricevere spam ci sono sempre alternative come il captcha (o altri escamotage più accessibili) per difendersi dagli invii di dati a puro fine di spam.

Detto questo, c'è anche da considerare che per l'iscrizione ad un servizio, un altro valido mezzo è l'attivazione dell'account tramite link spedito via email. Se dopo ti inondano di spam il problema tange relativamente poiché periodicamente gli account mai attivati possono essere eliminati senza problemi da un job pianificato in automatico.

A questo punto, personalmente, la soluzione che in genere adotto e/o che mi sento di consigliare è un qualcosa che si limiti a:
  • verificare l'esistenza del record MX del DNS della email;
  • verificare la validità sintattica della email;
  • sanitizzare la stringa dell'email.
Riassunta al volo, la funzione risultante potrebbe essere qualcosa di simile a questa:
PHP:
function is_email($email) {

	$mailSplit = explode('@', $email);
	$sanitizedEmail = filter_var($email, FILTER_SANITIZE_EMAIL);

	return checkdnsrr(array_pop($mailSplit), 'MX') && 
		filter_var($email, FILTER_VALIDATE_EMAIL) == $sanitizedEmail?
			$sanitizedEmail : false;
}



var_dump(is_email('[email protected]'));  // string(10) "[email protected]"
var_dump(is_email('[email protected]'));  // string(18) "[email protected]"
var_dump(is_email('[email protected]'));  // bool(false)
var_dump(is_email('invalìd"[email protected]'));  // bool(false)
 

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
Grazie,
ho effettuato un test del tuo codice, sembra ottimo, ma vorrei farti due domande:
- posso effettuare la richiesta per un numero considerevole di mail senza problemi?
- la funzione checkdnsrr mi restituisce diversi codice (21, 25, 34) come faccio a capire di cosa si tratta?

Grazie.
 
Ultima modifica:

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
Che figuraccia... string(18) indica il numero di caratteri nella stringa e nient'altro giusto?

Quindi l'indirizzo non è buono solo quando la funzione mi ritorna false, giusto?

Grazie.
 

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
Che figuraccia... string(18) indica il numero di caratteri nella stringa e nient'altro giusto?

"string(18)" è l'output del var_dump, la funzione che ho scritto ritorna l'indirizzo email verificato (se risulta valido), false altrimenti.
Questo implica che puoi fare controlli molto semplici per determinare se l'indirizzo email è valido:
PHP:
$email = is_email('[email protected]');

if (!$email) {
    echo "Email non valida";
}

La funzione si occupa anche di filtrare la stringa dell'email da tutti i caratteri non ammessi che potrebbero trovarcisi dentro, di conseguenza se il risultato della funzione non è false lo puoi andare ad inserire in un istruzione SQL (esempio) senza rischio.

- la funzione checkdnsrr mi restituisce diversi codice (21, 25, 34) come faccio a capire di cosa si tratta?

Che mi sembra strano, sicuro di non star confondendoti ancora con l'output della funzione var_dump() ? Stando a php.net, checkdnsrr()..
Returns TRUE if any records are found; returns FALSE if no records were found or if an error occurred.
 

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
Grazie per tutti i dettagli e l'ottima spiegazione! :)

Esatto, gli identificativi numerici sono quelli restituiti dal var_dump.

Quindi nel caso in cui la funzione is_mail() torni false significa solo che la mail non esiste più, giusto?
 

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
Grazie per tutti i dettagli e l'ottima spiegazione! :)

Esatto, gli identificativi numerici sono quelli restituiti dal var_dump.

Quindi nel caso in cui la funzione is_mail() torni false significa solo che la mail non esiste più, giusto?


Con la mia funzione significa o che la mail è scritta in un formato non valido o che per esempio @email.it (la parte dopo la chiocciola in un qualunque indirizzo email insomma) non è regolarmente registrato nei dns come server email.

Con la funzione proposta in precedenza è possibile invece sapere anche se un preciso indirizzo email è realmente esistente presso quel provider, la mia invece questo non te lo dice e prende per buona qualsiasi email se il provider di posta esiste.
 

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
Esatto, grazie a tutti per l'ottimo supporto e disponibilità.

Un'info, quando mi viene restituito il seguente messaggio:
Codice:
This is an automatically generated Delivery Status Notification.      
Delivery to the following recipients was aborted after 0 second(s):
Cosa significa?
 
Ultima modifica:

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
(Scusate, ma purtropo non posso più modificare il vecchio messaggio!)

Vorrei ricevere del supporto su alcune stringhe che mi vengono restituite per capire effettivamente lo stato della casella messa in esame:

1) Remote server replied: 550 5.7.1 more information. h45si7530082eeo.46 - gsmtp

2) Nessun DNS record utilizzabile per il dominio*villavitina.it

3) Indirizzo non verificato:*mx1.hotmail.com*dice*550 Requested action not taken: mailbox unavailable
Non esiste più la casella mail?

4) Indirizzo non verificato:*mx.bedandbreakfastorchidea.com*dice*550 5.1.1*recipient rejected

5) Indirizzo non verificato:*gmail-smtp-in.l.google.com*dice*550-5.1.1 The email account that you tried to reach does not exist. Please try

6) Nessun mailserver per il dominio specificato può essere contattato

7) Errore:*smtp.secureserver.net*dice*554 p3plibsmtp01-09.prod.phx3.secureserver.net bizsmtp RBL Reject -

Grazie per il supporto.
 

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
Ho provato ad eseguire lo script con un bel gruppo di indirizzi mail, visualizza solo alcuni risultati delle mail passate e non di tutti.

Anche il caricamento della pagina si blocca, non da alcun messaggio di timeout.

Come mai?
 
Discussioni simili
Autore Titolo Forum Risposte Data
A Verifica validità data in Java Java 2
I asp | includere un file, indirizzo depositato in un db Classic ASP 0
P Errore nell'indirizzo degli elementi HTML e CSS 2
elpirata Ricavare e stampare indirizzo ip da array associativo PHP 0
A [PHP] Bloccare utente tramite indirizzo IP PHP 3
I Url rewrite con .htaccess funziona ma poi mostra indirizzo "reale" nella barra di navigazione Apache 1
V [PHP]indirizzo email è protetto dagli spambots PHP 4
MarcoGrazia Verifica di un indirizzo email Snippet PHP 0
V [HTML] indirizzo htm zoneminder IP Cam e Videosorveglianza 0
CristianB72 [PHP] Controllo sintassi indirizzo email non funziona PHP 13
A [Javascript] indirizzo con variabili $_GET Javascript 1
utente Form mail php - indirizzo ip PHP 9
S Concatenare due campi di un form per creare un indirizzo web valido Javascript 7
W Estrapolare un indirizzo mail di un form durante l'invio PHP 5
T Condizioni multiple in htaccess per accesso a sub folder basato su indirizzo IP Apache 0
G Validazione indirizzo mail PHP 1
Lucia Fiore cambiare variabili <a in <a href='indirizzo'> HTML e CSS 1
N Recupero indirizzo mail PHP 1
M Script Google Maps per ricavare coordinate di un indirizzo PHP 0
K Cambio indirizzo dominio e reindirizzamento 301 Domini 1
braccobaldo Indirizzo email e concorrenza sleale? Leggi, Normative e Fisco 0
S [risolto] Creare una mappa Google per ogni indirizzo Javascript 14
R Configurare Apache per supportare più siti SSL su un singolo indirizzo IP Apache 0
J Scritp invio email convalida indirizzo PHP 13
felino PHPMailer: Indirizzo IP e Immagine PHP 6
S php memorizzare l indirizzo ip quando uno si registra PHP 4
borgo italia indirizzo email formalmente valido e esistente Snippet PHP 10
borgo italia validare un indirizzo email Snippet PHP 0
G Aprire indirizzo IP con desktop remoto PHP 3
C Problema: salvare indirizzo file in un database(mancanza delle backslash nel percorso) PHP 13
asevenx conta numero di click riconoscendo indirizzo ip PHP 1
Mauro Guardiani cerco webmaster per problemi reCAPTCHA e limite indirizzo ip. Offerte e Richieste di Lavoro e/o Collaborazione 0
anton Nascondere indirizzo email agli spambot in un form php PHP 21
M login con indirizzo a pagine diverse PHP 10
L Indirizzo ip + nome PHP 8
Vale2 Nascondere un indirizzo email agli spambot Snippet Javascript 0
Athene Validare un indirizzo email PHP 2
F Creare un indirizzo youtube valido Social Media Marketing 1
F Phpmailer e l'indirizzo del mittente PHP 3
max_400 Arrotondare indirizzo ip PHP 4
G Ricavare indirizzo virtuale da indirizzo fisico Classic ASP 0
S Inviare contenuto form a un indirizzo email HTML e CSS 1
max_400 Nascondere indirizzo o visualiz. un altro oppure Proteggere pagina php ricevente PHP 6
U indirizzo senza pagina PHP 2
G Form mail con indirizzo email del mittente PHP 3
borgo italia outlook: impossibile bloccare indirizzo di posta Windows e Software 5
I Salvare indirizzo immagine in database PHP 6
D Verificare esistenza indirizzo e-mail in php PHP 2
P Passaggio di un indirizzo tramite una variabile? Javascript 0
G Leggere variabile URL da indirizzo corrente di pagina Javascript 1

Discussioni simili