PDA

View Full Version : [C#] Verifica esistenza E-mail


race2
14-03-2011, 16:22
Salve,
esiste una Classe o Script in C# che verifica l'esistenza di un indirizzo e-mail per non creare troppi Delivery ???

ziggy1979
15-03-2011, 12:46
L'unica cosa che farei è verificare se la mail è valida a livello sintattico, così:


bool validMail = new Regex(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", RegexOptions.IgnorePatternWhitespace).IsMatch(email);


Ziggy.

tomminno
15-03-2011, 13:26
L'unica cosa che farei è verificare se la mail è valida a livello sintattico, così:


Il fatto che sia valida non indica che esista veramente.
Tra l'altro non saprei come verificare l'esistenza di una email.

In ogni caso la verifica di una email tramite regex è esattamente uno degli antipattern delle regex :D

RaouL_BennetH
15-03-2011, 13:38
Io non ho ben capito la domanda, ovvero:

Ti riferisci a qualsiasi indirizzo mail ?

In questo caso non credo sia possibile verificarne l'esistenza a priori (o almeno non riesco ad immaginare nulla).

Diverso invece è il contesto in cui gli unici indirizzi che devi verificare, facciano parte di una 'rubrica' interna o al limite aziendale.

race2
15-03-2011, 14:26
Io non ho ben capito la domanda, ovvero:

Ti riferisci a qualsiasi indirizzo mail ?

In questo caso non credo sia possibile verificarne l'esistenza a priori (o almeno non riesco ad immaginare nulla).

Diverso invece è il contesto in cui gli unici indirizzi che devi verificare, facciano parte di una 'rubrica' interna o al limite aziendale.

cosa cambia da una rubrica aziendale a una lista di 1.000.000 indirizzi vari catturati nel web ?

P.S. cosa ne pensi di questo ?
http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/

PGI-Bis
15-03-2011, 14:28
In teoria basta chiederlo al server smtp. Puoi usare il comando VRFY o RCP TO. Per il secondo devi prima mandare un MAIL FROM. Verifichi cosa risponde il server, se ti da un 250 l'indirizzo è valido.

tomminno
15-03-2011, 16:18
In teoria basta chiederlo al server smtp. Puoi usare il comando VRFY o RCP TO. Per il secondo devi prima mandare un MAIL FROM. Verifichi cosa risponde il server, se ti da un 250 l'indirizzo è valido.

VRFY verifica l'esistenza di un utente non di una email, che io sappia è disabilitato praticamente ovunque.
RCP TO è il comando che indica un destinatario email pertanto dovresti prima inviare una email ed eventualmente attendere l'avviso che non è stato possibile consegnare l'email.

PGI-Bis
15-03-2011, 17:19
RCP TO lo puoi mandare prima del corpo del messaggio

PGI-Bis
15-03-2011, 17:35
Il mio server non mi da grande fiducia:

>vrfy pierluigi@tukano.it
<252 send some mail, i'll try my best

Avanti savoia...

RaouL_BennetH
16-03-2011, 08:35
cosa cambia da una rubrica aziendale a una lista di 1.000.000 indirizzi vari catturati nel web ?


Se sono stati catturati, ovvero sono già 'archiviati' da qualche parte, non cambia nulla credo.


P.S. cosa ne pensi di questo ?
http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/

Che da quello che leggo permette appunto di verificare un indirizzo prima di inviare una mail e se questo è il tuo scopo va bene.

Io quello che ancora non ho compreso (e non dipende da te :D ) è se tu già conosci gli indirizzi di posta oppure no.

P.S: leggo anche che questo tipo di interrogazione, se fatta in modo ... invasivo, potrebbe causare l'aggiunta dell'IP del richiedente in una black list.

race2
16-03-2011, 09:49
Se sono stati catturati, ovvero sono già 'archiviati' da qualche parte, non cambia nulla credo.

si certo, sono gia stati importati nel mi osoftware di invio email.


Che da quello che leggo permette appunto di verificare un indirizzo prima di inviare una mail e se questo è il tuo scopo va bene.

vorrei dare possibilità agli utenti di fare una verifica degli indirizzi e-mail prima di spedire la Newsletter, in modo da evitare tutte le e-mail Delivery nel Server POP3.


Io quello che ancora non ho compreso (e non dipende da te :D ) è se tu già conosci gli indirizzi di posta oppure no.


no non li conosco perchè si stà parlando di un Software ceh ho sviluppato per inviare Newslette e verrà scaricatoi dal web, ogniuno lo userà come megio crede.


P.S: leggo anche che questo tipo di interrogazione, se fatta in modo ... invasivo, potrebbe causare l'aggiunta dell'IP del richiedente in una black list.


azz...., pure quello ceh ha suggerito PGI-Bis ???

tomminno
16-03-2011, 09:50
P.S: leggo anche che questo tipo di interrogazione, se fatta in modo ... invasivo, potrebbe causare l'aggiunta dell'IP del richiedente in una black list.

Quel metodo prevede che uno possa connettersi al server smtp della casella di posta da verificare!
Nella maggior parte dei casi il server smtp richiede il processo di autenticazione.
Come fai ad avere una login valida per ogni dominio per verificare il destinatario con quel metodo?

Infine come riportato alcuni server smtp considerano sempre valida in ingresso una email appartenente al proprio dominio, salvo poi fallire in fase di invio, con conseguente segnalazione al mittente tramite email.

race2
16-03-2011, 09:55
ma quindi riassumento....
come fa SENDBLASTER a validare gli indirizzi ???

RaouL_BennetH
16-03-2011, 10:02
Quel metodo prevede che uno possa connettersi al server smtp della casella di posta da verificare!
Nella maggior parte dei casi il server smtp richiede il processo di autenticazione.
Come fai ad avere una login valida per ogni dominio per verificare il destinatario con quel metodo?

Infine come riportato alcuni server smtp considerano sempre valida in ingresso una email appartenente al proprio dominio, salvo poi fallire in fase di invio, con conseguente segnalazione al mittente tramite email.

Ma infatti sono le stesse domande che mi sono posto io, proprio all'inizio del 3d:

In questo caso non credo sia possibile verificarne l'esistenza a priori (o almeno non riesco ad immaginare nulla).


Ma poi... se il software serve per le news, vorrà dire (penso), che chi lo sta usando abbia già una lista di distribuzione fatta da utenti che hanno accettato di ricevere newsletter e che quindi abbiano fornito indirizzi email validi con una sottoscrizione/registrazione che dir si voglia.

Certo può capitare che qualche utente registrato abbia cambiato indirizzo mail o si sia cancellato.

Magari, potresti ragionare al contrario, ovvero, dopo aver ricevuto dei delivery relativi ad email non valide, potresti fare qualcosa che in automatico elimini questi indirizzi, in modo da sfoltire la lista.


P.S.: per SENDBLASTER..

direttamente dal sito:


Le newsletter possono essere utilizzate per l’invio periodico di informazioni su offerte speciali, novità su prodotti o servizi,
per comunicazioni agli iscritti da parte di associazioni o enti Onlus, ma anche per comunicare con gli amici.

tomminno
16-03-2011, 10:26
ma quindi riassumento....
come fa SENDBLASTER a validare gli indirizzi ???

Dal sito sembra che gestiscano solo il bounce-back ovvero i messaggi di errore ritornati dal server smtp in caso di destinatario inesistente

race2
16-03-2011, 16:12
ok, per ora vado avanti con queste informazioni, grazie mille.