Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Separar mails

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Sab Dic 01, 2007 7:00 pm
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
Separar mails Responder citando

Hola.

Bueno, si en UNIX/Unix-Like ven /var/mail/usuario o /var/spool/mail/usuario podrán ver que todos los e-mails están en un archivo ( separado por "\n" ).

La pregunta es: ¿ Cómo separa los mails ?
Yo tenía planeado usar Tie::File que da mejores opciones que DB_File, y sacar los headers definidos por el RFC-4021 así que en teoría solo tendría que saber que un mail va así:
Código:
Header
"\n"
Body
"\n"


Todo va bien usando una que otra regex de novato Rolling Eyes , pero si encuentro un mail mal formado ( un RE: de algún usenet que contiene partes de headers en el body ).

Si tienen algún tip... ¡No se lo guarden!

Gracias.
Mensaje Sab Dic 01, 2007 8:43 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
Responder citando

El formato de esos buzones se llama mbox.

Para extraer correos que cumplan una condición, lo mejor es usar grepmail (con su apabullante número de opciones) disponible en tu Linux más cercano.

O usar Perl. Y no hace falta regex complicadas. Sólo hay que instalar alguno de los varios módulos existentes para manejar carpetas mbox, como por ejemplo Mail::Box.

Perl:
use Mail::Box::Manager;
 my $mgr    = Mail::Box::Manager->new;
 my $folder = $mgr->open(folder => $ENV{MAIL}, ...);
 print $folder->name;

 # Get the first message.
 print $folder->message(0);

 # Delete the third message
 $folder->message(3)->delete;

 # Get the number of messages in scalar context.
 my $emails = $folder->messages;

 # Iterate over the messages.
 foreach ($folder->messages) {...} # all messages
 foreach (@$folder) {...}          # all messages

 $folder->addMessage(Mail::Box::Message->new(...));
Mensaje Mie Dic 05, 2007 2:26 pm
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
Responder citando

El módulo está muy bien, muchas gracias Smile
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group