Página 1 de 1

Validacion de cfds recibidos por email

Publicado: Mié Feb 02, 2011 6:19 pm
por manrar
Saludos a todos.
Me interesa hacer una cuenta de correo en el servidor de correo de la empresa para recibir en el todos los cdfs que nos envian los proveedores. La idea es validar dichos cfds y poder reclamar en caso de que tengamos alguno erroneo. Las preguntas puntuales son:
Alguien ha hecho esto de modo que al recibir el correo en el attachment se valide mediante algun software?.
Que tipo de correo recomiendan para este fin (actualmente usamos exchange pero seguramente no me sirve para esto ya que la base de datos no es accesible)?

Se que hay soluciones como control2000 o incluso misfacturas.net pero la idea es desarrollar la solucion in house. He comprado algunos codigos fuentes pero por lo general solo validan un cfd a la vez.

Mil gracias..

Manuel

Re: Validacion de cfds recibidos por email

Publicado: Mié Feb 02, 2011 7:11 pm
por Dado
manrar escribió:Saludos a todos.
Me interesa hacer una cuenta de correo en el servidor de correo de la empresa para recibir en el todos los cdfs que nos envian los proveedores. La idea es validar dichos cfds y poder reclamar en caso de que tengamos alguno erroneo. Las preguntas puntuales son:
Alguien ha hecho esto de modo que al recibir el correo en el attachment se valide mediante algun software?.
Que tipo de correo recomiendan para este fin (actualmente usamos exchange pero seguramente no me sirve para esto ya que la base de datos no es accesible)?

Se que hay soluciones como control2000 o incluso misfacturas.net pero la idea es desarrollar la solucion in house. He comprado algunos codigos fuentes pero por lo general solo validan un cfd a la vez.

Mil gracias..

Manuel
Interesante proyecto, deja investigo un poco y talvez pueda adaptar el ValidaCFD_cl para este caso (si conoces el ValidaCFD_cl verdad? que si no te baneo.... :lol: )

Seria un proyecto independiente de cualquier cliente de correo, el mismo programa recibiria los email y validaria los attachment, talvez con la posibilidad de contestarle al emisor con un valido / invalido......

En un par de dias regreso con una propuesta..........

admin.

Re: Validacion de cfds recibidos por email

Publicado: Jue Feb 03, 2011 7:38 am
por fortiz
Hola,

Yo tengo codigo PHP para hacer eso precisamente, espero les sirva

Código: Seleccionar todo

$pop = imap_open("{pop.gmail.com:995/pop3/ssl/novalidate-cert}INBOX", $username, $pasword);
$cant = imap_num_msg ( $pop);
echo "correos $cant\n";
for ($correo=1; $correo<=$cant; $correo++) {
    echo "correo:$correo\n";
    $msg = imap_fetchstructure($pop, $correo);
    if ($msg->parts) {
       $header=imap_headerinfo($pop, $correo);
       foreach ($msg->parts as $partno=>$p) {
           //print_r($p);
           $d = trim($p->disposition);
           $e = trim($p->encoding);
           $s = trim($p->subtype);
           echo "disposition = $d encoding=$e subtype=$s\n";
           // var_dump($p);
           if ($e==0 && $s=="ALTERNATIVE") {
               $cuerpo = trim(substr(imap_fetchbody($pop,$correo,$partno+1),0,255));
           }
           if ($e>=3) { // para que sirva para INLINE  && $d=="ATTACHMENT") {
               $data = imap_fetchbody($pop,$correo,$partno+1);
               if ($e==3) // Base 64
                   $data=base64_decode($data); 
               if ($e==4) // Quoted printable
                   $data=imap_qprint($data);
               $data = preg_replace('/\s\s+/', ' ', trim($data));  
               if (substr($data,0,3)==chr(239).chr(187).chr(191)) {
                   // Quita UTF BOM (U+FEFF)
                   $data=substr($data,3);
               }
               if (substr($data,0,5)=="<?xml") {
                   proc_xml($data,$header,$cuerpo);
               } else {
                   echo "Attach ".substr($data,0,5)."\n";
               }
           }
       }
    }
}
Ya la funcion proc_xml() es lo que hace tu validacfd ...

Re: Validacion de cfds recibidos por email

Publicado: Jue Feb 03, 2011 10:28 am
por smendoza
Porque no habria de poderse con exchange? Justo me acaban de comentar en mi trabajo si podemos hacer algo como esto (y este post me cae como anillo al dedo xD), nosotros tambien usamos exchange como servidor de correo, pero igual manera puedes acceder a el mediante pop3, no necesariamente acceder directamente a la base de datos.

Un punto interesante es en que lenguaje lo quieres hacer? En mi caso uno VB.net y he encontrado varias herramientas/ejemplos/dll's, su mayoria hechos en C#.

Aqui los pongo por si a alguien le sirven.

http://www.codeproject.com/KB/IP/despop3client.aspx
http://stackoverflow.com/questions/4438 ... -pop3-in-c
http://csharpmail.codeplex.com/documentation
http://trixy.justinkbeck.com/2009/07/c- ... gmail.html
http://www.lesnikowski.com/mail/

Incluso creo que hay una libreria de chilkat para esto.

Saludos!