Sab Dic 01, 2007 7:00 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
| Separar mails |
|
|
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 , 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. |
|
|
|

Sab Dic 01, 2007 8:43 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
|
|
|
|
|
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(... )); |
|
|

Mie Dic 05, 2007 2:26 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
|
|
|
El módulo está muy bien, muchas gracias  |
|
Powered by phpBB © 2001, 2005 phpBB Group
|