Utenti collegati: 22 
 
it.comp.as400
IBM AS/400

Indice messaggi | Invia un reply | Tutti i newsgroup | Cerca | Statistiche 



  Inviato da: Mauro Romeo  Mostra tutti i messaggi di Mauro Romeo
Titolo: Re: Verificare da as400 se indirizzo email esiste o meno
Newsgroup: it.comp.as400
Data: 17/10/2017
Ora: 16:18:13
Mostra headers
 
  Il 17/10/2017 14:22, Enigmista ha scritto:<br /> &gt; <br /> &gt; <br /> &gt; <br /> &gt; <br /> &gt;&gt; secondo me non esiste alcuna strada per verificare che un indirizzo email<br /> &gt;&gt; sia esistente, indipendentemente da AS400.<br /> &gt; <br /> &gt; in realt´┐Ż qualche cosa su internet si trova che verifica l'esistenza <br /> &gt; come ad esempio questo sito:<br /> &gt; http://www.mio-ip.it/verifica-email<br /> &gt; <br /> &gt; speravo in un webservice su internet tipo quello della banca centrale <br /> &gt; europea che con una select sql ti restituisce i cambi.<br /> &gt; <br /> Io uso questo funzionicchia. L'ho preso da qualche parte da Scott <br /> Klement ma non ho piu' il link. Ovviamnte testa il dominio e il rekord <br /> MX non la mail in toto.<br /> Mauro Romeo<br /> H NOMAIN <br /> <br /> <br /> <br /> //* This service program can be used to validate the syntax of <br /> <br /> //* an e-mail address. <br /> <br /> //* Scott Klement, Nov 13, 2003 <br /> <br /> //* <br /> <br /> <br /> <br /> //* IMPORTANT: This only verifies the SYNTAX and DOMAIN (the <br /> <br /> //* part after the '@') of an e-mail address. The only way <br /> <br /> //* to completely validate the address is by sending e-mail <br /> <br /> //* to it, and getting a reply. But, this routine is good <br /> <br /> //* for checking for keying errors when entering e-mail into <br /> <br /> //* a screen field or similar. <br /> <br /> //* <br /> <br /> //* WARNING: If TCP/IP is down, or your iSeries does not have <br /> <br /> //* it's DNS set up properly to resolve hosts from the <br /> internet,<br /> //* all e-mail addresses will appear invalid. <br /> <br /> <br /> <br /> //* <br /> <br /> //* compile me with: <br /> <br /> //* CRTRPGMOD VALMAIL SRCFILE(xxx/xxx) DBGVIEW(*LIST) <br /> <br /> //* CRTSRVPGM VALMAIL MODULE(xxx/VALMAIL) EXPORT(*SRCFILE) <br /> <br /> //* SRCFILE(xxx/VALMAIL_B) <br /> <br /> //* <br /> <br /> //* create binding directory so other programs can find me: <br /> <br /> //* CRTBNDDIR BNDDIR(xxx/VALMAIL) <br /> <br /> //* ADDBNDDIRE BNDDIR(VALMAIL) OBJ((xxx/VALMAIL *SRVPGM)) <br /> <br /> //* <br /> <br /> <br /> <br /> /copy qcopy,valmail_h <br /> <br /> <br /> <br /> D ParseAddr PR 1N <br /> <br /> D input 1024A const varying <br /> <br /> D local 512A varying <br /> <br /> D domain 512A varying <br /> <br /> <br /> <br /> D GetHost PR 1N <br /> <br /> D domain 512A const varying <br /> <br /> D addr 10U 0 <br /> <br /> <br /> <br /> D GetMX PR 10I 0 <br /> <br /> D domain 512A const varying <br /> <br /> D max_entries 10I 0 value <br /> <br /> D mxhost 256A dim(50) options(*varsize) <br /> <br /> D mxpty 5U 0 dim(50) options(*varsize) <br /> <br /> <br /> <br /> D GetInt16 PR 5U 0 <br /> <br /> D ptr * <br /> <br /> D GetInt32 PR 10U 0 <br /> <br /> D ptr * <br /> <br /> <br /> <br /> <br /> <br /> <br /> //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> // IsValidEmail(): Check if e-mail address is valid <br /> <br /> // <br /> <br /> // address = (input) e-mail address to check <br /> <br /> // <br /> <br /> // Returns *ON if address looks valid or *OFF otherwise <br /> <br /> <br /> //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> P IsValidEmail B export <br /> <br /> D IsValidEmail PI 1N <br /> <br /> D address 1024A const varying <br /> <br /> <br /> <br /> D user s 512A varying <br /> <br /> D dom s 512A varying <br /> <br /> D ip s 10U 0 <br /> <br /> D count s 10I 0 <br /> <br /> D MXSIZE c const(10) <br /> <br /> d mx s 256A dim(MXSIZE) <br /> <br /> d pty s 5U 0 dim(MXSIZE) <br /> <br /> <br /> <br /> // <br /> <br /> // parse address into the user (&quot;local&quot;) and domain components. <br /> <br /> // if parse fails, it's not a valid address. <br /> <br /> // <br /> <br /> /FREE <br /> <br /> if ParseAddr(address: user: dom) = *OFF; <br /> <br /> return *OFF; <br /> <br /> endif; <br /> <br /> <br /> <br /> // <br /> <br /> // the domain must either exist as a Host or must have <br /> <br /> // mail exchangers defined for it. If not, it's not <br /> <br /> // a valid e-mail address. <br /> <br /> // <br /> <br /> if dom &lt;&gt; 'fastwebnet.it'; <br /> <br /> if GetHost(dom: ip) = *OFF; <br /> <br /> count = GetMX(dom: MXSIZE: mx: pty); <br /> <br /> if count &lt; 1; <br /> <br /> return *OFF; <br /> <br /> endif; <br /> <br /> endif; <br /> <br /> endif; <br /> <br /> <br /> <br /> return *ON; <br /> <br /> /END-FREE <br /> <br /> P E <br /> <br /> <br /> <br /> <br /> <br /> <br /> //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> // ParseAddr(): Parse an e-mail address into local &amp; domain <br /> parts<br /> // <br /> <br /> // input = (input) original e-mail address <br /> <br /> // local = (output) local portion of address <br /> <br /> // domain = (output) domain portion of address <br /> <br /> // <br /> <br /> // Returns *ON if parse was successful, or *OFF if address <br /> format<br /> // is not valid. <br /> <br /> <br /> //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> P ParseAddr B <br /> <br /> D ParseAddr PI 1N <br /> <br /> D input 1024A const varying <br /> <br /> D local 512A varying <br /> <br /> D domain 512A varying <br /> <br /> <br /> <br /> D state s 10I 0 <br /> <br /> D laststate s 10I 0 <br /> <br /> D format s 10I 0 <br /> <br /> D pos s 10I 0 <br /> <br /> D ch s 1A <br /> <br /> D space s 1N <br /> <br /> <br /> <br /> <br /> //***************************************************************** <br /> <br /> // Notes: <br /> <br /> // -- A Valid E-mail address must be in 1 of 2 formats: <br /> <br /> // 1: sklement@example.com <br /> <br /> // 2: Scott Klement &lt;sklement@example.com&gt; <br /> <br /> // -- Quotes can (sometimes) be used to allow special <br /> characters<br /> // ex: &quot;scott@home&quot;@example.com <br /> <br /> // -- Anything in parenthesis is a comment <br /> <br /> // ex: sklement@example.com (Nice Guy, Very Clever!) <br /> <br /> // -- The @ character separates the &quot;local part&quot; (usually a <br /> <br /> // user name) from the &quot;domain&quot; <br /> <br /> <br /> //***************************************************************** <br /> <br /> /FREE <br /> <br /> state = 1; <br /> <br /> format = 1; <br /> <br /> %len(local) = 0; <br /> <br /> %len(domain) = 0; <br /> <br /> space = *Off; <br /> <br /> <br /> <br /> <br /> //***************************************************************** <br /> <br /> // This state machine parses the e-mail address or returns *OFF <br /> <br /> // if an invalid character is found. <br /> <br /> <br /> //***************************************************************** <br /> <br /> for pos = 1 to %len(input); <br /> <br /> <br /> <br /> ch = %subst(input:pos:1); <br /> <br /> <br /> <br /> //****************************************** <br /> <br /> // State 1: Reading beginning of address. <br /> <br /> // <br /> <br /> // special chars: &quot; ( @ &lt; <br /> <br /> // invalid chars: comma,&gt;,) <br /> <br /> // <br /> <br /> // A space if legal here ONLY if we end <br /> <br /> // up with format=2 <br /> <br /> //****************************************** <br /> <br /> select; <br /> <br /> when state = 1; <br /> <br /> <br /> <br /> select; <br /> <br /> when ch='&quot;'; <br /> <br /> local = local + '&quot;'; <br /> <br /> laststate=1; <br /> <br /> state=2; <br /> <br /> when ch='('; <br /> <br /> laststate=1; <br /> <br /> state=3; <br /> <br /> when ch='&lt;'; <br /> <br /> format = 2; <br /> <br /> %len(local) = 0; <br /> <br /> state=4; <br /> <br /> when ch='@'; <br /> <br /> laststate = 1; <br /> <br /> state=5; <br /> <br /> when ch=' '; <br /> <br /> space = *ON; <br /> <br /> when ch=',' or ch=')' or ch='&gt;'; <br /> <br /> return *OFF; <br /> <br /> other; <br /> <br /> local = local + ch; <br /> <br /> endsl; <br /> <br /> <br /> <br /> //****************************************** <br /> <br /> // State 2: Reading quoted text <br /> <br /> // <br /> <br /> // special chars: &quot; <br /> <br /> // invalid chars: (none) <br /> <br /> //****************************************** <br /> <br /> when state = 2; <br /> <br /> local = local + ch; <br /> <br /> if ch = '&quot;'; <br /> <br /> state = laststate; <br /> <br /> endif; <br /> <br /> <br /> <br /> //****************************************** <br /> <br /> // State 3: Reading commented text <br /> <br /> // special chars: ) <br /> <br /> // invalid chars: (none) <br /> <br /> //****************************************** <br /> <br /> when state = 3; <br /> <br /> if ch = ')'; <br /> <br /> state = laststate; <br /> <br /> endif; <br /> <br /> <br /> <br /> //****************************************** <br /> <br /> // State 4: reading local-part of ext format <br /> <br /> // special chars: &quot; @ ( <br /> <br /> // invalid chars: space,comma,&gt;,) <br /> <br /> //****************************************** <br /> <br /> when state = 4; <br /> <br /> <br /> <br /> select; <br /> <br /> when ch = '&quot;'; <br /> <br /> local = local + '&quot;'; <br /> <br /> laststate = 4; <br /> <br /> state = 2; <br /> <br /> when ch = '('; <br /> <br /> laststate = 4; <br /> <br /> state = 3; <br /> <br /> when ch = '@'; <br /> <br /> laststate = 4; <br /> <br /> state = 5; <br /> <br /> when ch=' ' or ch=',' or ch=')' or ch='&gt;'; <br /> <br /> return *OFF; <br /> <br /> other; <br /> <br /> local = local + ch; <br /> <br /> endsl; <br /> <br /> <br /> <br /> <br /> <br /> //****************************************** <br /> <br /> // State 5: reading domain portion of addr <br /> <br /> // <br /> <br /> // we aren't too concerned about validation <br /> <br /> // here, because DNS can validate the <br /> <br /> // domain portion. <br /> <br /> //****************************************** <br /> <br /> when state = 5; <br /> <br /> <br /> <br /> select; <br /> <br /> when ch='&gt;' and format=2; <br /> <br /> leave; <br /> <br /> when ch='('; <br /> <br /> laststate = 5; <br /> <br /> state = 3; <br /> <br /> other; <br /> <br /> domain = domain + ch; <br /> <br /> endsl; <br /> <br /> <br /> <br /> endsl; <br /> <br /> <br /> <br /> endfor; <br /> <br /> <br /> <br /> <br /> //***************************************************************** <br /> <br /> // Some extra validity checking: <br /> <br /> // -- there must be both a local and domain part <br /> <br /> // -- domain part is illegal if less than 2 chars <br /> <br /> <br /> //***************************************************************** <br /> <br /> if format=1 and space=*ON; <br /> <br /> return *OFF; <br /> <br /> endif; <br /> <br /> if %len(local)&lt;1 or %len(domain)&lt;2; <br /> <br /> return *OFF; <br /> <br /> endif; <br /> <br /> <br /> <br /> return *ON; <br /> <br /> /END-FREE <br /> <br /> P E <br /> <br /> <br /> <br /> <br /> <br /> <br /> //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> // GetHost(): Look up a domain name via either host table or DNS <br /> <br /> // <br /> <br /> // domain = (input) host to look up. <br /> <br /> // addr = (output) binary IP address of host <br /> <br /> // <br /> <br /> // returns *OFF if host could not be looked up, *ON otherwise <br /> <br /> <br /> //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> P GetHost B <br /> <br /> D GetHost PI 1N <br /> <br /> D domain 512A const varying <br /> <br /> D addr 10U 0 <br /> <br /> <br /> <br /> // <br /> <br /> // inet_addr() API gets binary IP address from char IP addr. <br /> <br /> // (in other words, 127.0.0.1 -&gt; x'7F000001' <br /> <br /> // <br /> <br /> // Returns INADDR_NONE if charaddr is not valid. <br /> <br /> // <br /> <br /> D INADDR_NONE C CONST(4294967295) <br /> <br /> D inet_addr PR 10U 0 extproc('inet_addr') <br /> <br /> D charaddr * value options(*string) <br /> <br /> <br /> <br /> // <br /> <br /> // gethostbyname() API looks up a host in the host table or <br /> <br /> // from DNS (if it's not in the host table) <br /> <br /> // <br /> <br /> // returns a pointer to a hostent structure, or *NULL otherwise <br /> <br /> // <br /> <br /> D gethostbyname PR * extproc('gethostbyname') <br /> <br /> D hostname * value options(*string) <br /> <br /> <br /> <br /> // <br /> <br /> // the hostent structure is returned by the gethostbyname API <br /> <br /> // <br /> <br /> D p_hostent S * <br /> <br /> D hostent DS Based(p_hostent) <br /> <br /> D h_name * <br /> <br /> D h_aliases * <br /> <br /> D h_addrtype 5I 0 <br /> <br /> D h_length 5I 0 <br /> <br /> D h_addrlist * <br /> <br /> D p_h_addr S * Based(h_addrlist) <br /> <br /> D h_addr S 10U 0 Based(p_h_addr) <br /> <br /> <br /> <br /> D ipaddr s 10U 0 <br /> <br /> <br /> <br /> /FREE <br /> <br /> ipaddr = inet_addr(domain); <br /> <br /> if ipaddr = INADDR_NONE; <br /> <br /> p_hostent = gethostbyname(domain); <br /> <br /> if p_hostent = *NULL; <br /> <br /> return *OFF; <br /> <br /> endif; <br /> <br /> ipaddr = h_addr; <br /> <br /> endif; <br /> <br /> <br /> <br /> addr = ipaddr; <br /> <br /> return *ON; <br /> <br /> /END-FREE <br /> <br /> P E <br /> <br /> <br /> <br /> <br /> <br /> <br /> //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> // GetMX(): Get mail exchanger DNS records for a domain <br /> <br /> // <br /> <br /> // domain = (input) host to look up records for. <br /> <br /> // max_entries = (input) max number of entries you can fit into <br /> <br /> // your host_array and pty_array <br /> <br /> // mxhost = (output) array of hostnames pointed to by <br /> <br /> // DNS MX records. <br /> <br /> // mxpty = (output) array of priority levels for the <br /> <br /> // hosts listed above. <br /> <br /> // <br /> <br /> // returns -1 upon failure, otherwise the number of MX hosts <br /> found.<br /> <br /> //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> P GetMX B <br /> <br /> D GetMX PI 10I 0 <br /> <br /> D domain 512A const varying <br /> <br /> D max_entries 10I 0 value <br /> <br /> D mxhost 256A dim(50) options(*varsize) <br /> <br /> D mxpty 5U 0 dim(50) options(*varsize) <br /> <br /> <br /> <br /> D MAX_ENTRIES_ALLOWED... <br /> <br /> D C CONST(50) <br /> <br /> <br /> <br /> D C_ANY C CONST(255) <br /> <br /> D C_IN C CONST(1) <br /> <br /> <br /> <br /> D T_A C CONST(1) <br /> <br /> D T_NS C CONST(2) <br /> <br /> D T_CNAME C CONST(5) <br /> <br /> D T_SOA C CONST(6) <br /> <br /> D T_WKS C CONST(11) <br /> <br /> D T_PTR C CONST(12) <br /> <br /> D T_HINFO C CONST(13) <br /> <br /> D T_MX C CONST(15) <br /> <br /> D T_TXT C CONST(16) <br /> <br /> D T_ANY C CONST(255) <br /> <br /> <br /> <br /> D HFIXEDSZ C CONST(12) <br /> <br /> D QFIXEDSZ C CONST(4) <br /> <br /> <br /> <br /> D p_dns_HEADER S * <br /> <br /> D dns_HEADER DS based(p_dns_HEADER) <br /> <br /> D dns_id 5U 0 <br /> <br /> D dns_bitflds 2A <br /> <br /> D dns_qdcount 5U 0 <br /> <br /> D dns_ancount 5U 0 <br /> <br /> D dns_nscount 5U 0 <br /> <br /> D dns_arcount 5U 0 <br /> <br /> <br /> <br /> D res_search PR 10I 0 extproc('res_search') <br /> <br /> D domain_name * value options(*string) <br /> <br /> D class 10I 0 value <br /> <br /> D type 10I 0 value <br /> <br /> D answer_buf * value <br /> <br /> D ans_buf_len 10I 0 value <br /> <br /> <br /> <br /> D dn_skipname PR 10I 0 extproc('dn_skipname') <br /> <br /> D comp_dn * value <br /> <br /> D end_of_msg * value <br /> <br /> <br /> <br /> D dn_expand PR 10I 0 extproc('dn_expand') <br /> <br /> D start_dns_pkt * value <br /> <br /> D end_dns_pkt * value <br /> <br /> D comp_dn * value <br /> <br /> D expanded_dn * value <br /> <br /> D bufsize 10I 0 value <br /> <br /> <br /> <br /> D rc S 10I 0 <br /> <br /> D answer S 2048A <br /> <br /> D cp S * <br /> <br /> D cx S 5I 0 <br /> <br /> D end S * <br /> <br /> D namebuf S 256A <br /> <br /> D n S 10I 0 <br /> <br /> D entries S 10I 0 <br /> <br /> D type S 5U 0 <br /> <br /> D class S 5U 0 <br /> <br /> D ttl S 10U 0 <br /> <br /> D size S 5U 0 <br /> <br /> D pri S 5U 0 <br /> <br /> <br /> <br /> /FREE <br /> <br /> if max_entries &gt; MAX_ENTRIES_ALLOWED; <br /> <br /> return -1; <br /> <br /> endif; <br /> <br /> <br /> <br /> //************************************************************* <br /> <br /> // Perform a DNS search for domain by MX record <br /> <br /> //************************************************************* <br /> <br /> rc = res_search(domain: C_IN:T_MX: <br /> <br /> %addr(answer): %size(answer)); <br /> <br /> if rc &lt; 0; <br /> <br /> return -1; <br /> <br /> endif; <br /> <br /> <br /> <br /> //************************************************************* <br /> <br /> // Parse the returned DNS record, and place entries into the <br /> <br /> // mxpty and mxhost arrays <br /> <br /> //************************************************************* <br /> <br /> // just to make sure we don't overflow our buffer if <br /> <br /> // and invalid packet length is given to us: <br /> <br /> if rc &gt; %size(answer); <br /> <br /> rc = %size(answer); <br /> <br /> endif; <br /> <br /> <br /> <br /> // intialize pointers &amp; misc <br /> <br /> p_dns_HEADER = %addr(answer); <br /> <br /> cp = %addr(answer) + HFIXEDSZ; <br /> <br /> eval end = %addr(answer) + rc; <br /> <br /> entries = 0; <br /> <br /> <br /> <br /> // skip over the question records: <br /> <br /> // <br /> <br /> //c do dns_qdcount <br /> <br /> For cx to dns_qdcount; <br /> <br /> if cp &gt;= end; <br /> <br /> leave; <br /> <br /> endif; <br /> <br /> n = dn_skipname(cp: end); <br /> <br /> if n &lt; 0; <br /> <br /> return -1; <br /> <br /> endif; <br /> <br /> cp = cp + n + QFIXEDSZ; <br /> <br /> endfor; <br /> <br /> <br /> <br /> // each answer record in the buffer consists of (for MX): <br /> <br /> //c do dns_ancount <br /> <br /> For cx to dns_ancount; <br /> <br /> if cp &gt;= end; <br /> <br /> leave; <br /> <br /> endif; <br /> <br /> n = dn_expand(p_dns_HEADER: end: cp: <br /> <br /> %addr(namebuf): %size(namebuf)); <br /> <br /> cp = cp + n; <br /> <br /> type = GetInt16(cp); <br /> <br /> class = GetInt16(cp); <br /> <br /> ttl = GetInt32(cp); <br /> <br /> size = GetInt16(cp); <br /> <br /> if type &lt;&gt; T_MX; <br /> <br /> cp = cp + size; <br /> <br /> iter; <br /> <br /> endif; <br /> <br /> pri = GetInt16(cp); <br /> <br /> n = dn_expand(p_dns_HEADER: end: cp: <br /> <br /> %addr(namebuf): %size(namebuf)); <br /> <br /> cp = cp + n; <br /> <br /> if entries &lt; MAX_ENTRIES; <br /> <br /> entries = entries + 1; <br /> <br /> mxpty(entries) = pri; <br /> <br /> mxhost(entries) = %str(%addr(namebuf)); <br /> <br /> endif; <br /> <br /> endfor; <br /> <br /> <br /> <br /> return entries; <br /> <br /> /END-FREE <br /> <br /> P E <br /> <br /> <br /> <br /> <br /> <br /> //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> // This gets a short int from a DNS record and advances the <br /> <br /> // pointer. <br /> <br /> //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> P GetInt16 B <br /> <br /> D GetInt16 PI 5U 0 <br /> <br /> D ptr * <br /> <br /> D p_short S * <br /> <br /> D value S 5U 0 based(p_short) <br /> <br /> /FREE <br /> <br /> p_short = ptr; <br /> <br /> ptr = ptr + %size(value); <br /> <br /> return value; <br /> <br /> /END-FREE <br /> <br /> P E <br /> <br /> <br /> <br /> <br /> <br /> //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> // This gets an int from a DNS record and advances the <br /> <br /> // pointer. <br /> <br /> //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <br /> <br /> P GetInt32 B <br /> <br /> D GetInt32 PI 10U 0 <br /> <br /> D ptr * <br /> <br /> D p_int S * <br /> <br /> D value S 10U 0 based(p_int) <br /> <br /> /FREE <br /> <br /> p_int = ptr; <br /> <br /> ptr = ptr + %size(value); <br /> <br /> return value; <br /> <br /> /END-FREE <br /> <br /> P E<br /> <br /> COPY<br /> /if defined(VALMAIL_H_DONE)<br /> /eof<br /> /endif<br /> <br /> *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br /> * IsValidEmail(): Check if e-mail address is valid<br /> *<br /> * address = (input) e-mail address to check<br /> *<br /> * Returns *ON if address looks valid or *OFF otherwise<br /> *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br /> D IsValidEmail PR 1N<br /> D address 1024A const varying<br /> <br /> /define VALMAIL_H_DONE<br /> <br /> <br /> <br /> <br />  

Il thread:
da leggere Enigmista 17/10 13:38
Verificare da as400 se indirizzo email esiste o meno
   da leggere Alex 17/10 14:07
Re: Verificare da as400 se indirizzo email esiste o meno
      da leggere Enigmista 17/10 14:22
Re: Verificare da as400 se indirizzo email esiste o meno
         da leggere Mauro Romeo 17/10 16:18
Re: Verificare da as400 se indirizzo email esiste o meno
            da leggere Enigmista 17/10 16:51
Re: Verificare da as400 se indirizzo email esiste o meno
         da leggere Obelix 17/10 16:19
Re: Verificare da as400 se indirizzo email esiste o meno
            da leggere Enigmista 17/10 16:55
Re: Verificare da as400 se indirizzo email esiste o meno
               da leggere Dr.UgoGagliardelli 18/10 08:29
Re: Verificare da as400 se indirizzo email esiste o meno
            da leggere Alex 17/10 16:57
Re: Verificare da as400 se indirizzo email esiste o meno
               da leggere Obelix 18/10 23:15
Re: Verificare da as400 se indirizzo email esiste o meno
   da leggere Dr.UgoGagliardelli 18/10 08:24
Re: Verificare da as400 se indirizzo email esiste o meno
 

Invia una risposta:

Nome:

Email:

Titolo:

Testo:


Attenzione: l'invio del messaggio richiede diversi secondi.
Non premere pi´┐Ż volte il tasto "Invia".

 © Sergio Simonetti 2001 Che cos'è Links