• Publicidad

Ayuda con un código en Perl para POP3

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Notapor proxy_lainux » 2009-04-16 12:31 @563

Hola.

Lo intenté, incluso ahorita lo volví a intentar e instalé módulos y más módulos que tenían el nombre de los errores y los que tenían nombres similares, incluso instalé módulos de CPAN pero tampoco... lo que descubrí es que cuando intento instalar Email::MIME con cpan, no se puede, y cuando lo busco con "Búsqueda de archivos" sí se encuentra MIME.pm, pero si hago esto
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -MEmail::MIME:: -e 1
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

siempre me aparece este error
Código: Seleccionar todo
Can't locate Email/MIME/.pm in @INC (@INC contains: /usr/local/lib/perl5/5.10.0/i686-linux /usr/local/lib/perl5/5.10.0 /usr/local/lib/perl5/site_perl/5.10.0/i686-linux /usr/local/lib/perl5/site_perl/5.10.0 .).
BEGIN failed--compilation aborted.p


y ya busqué en aptitude... e instalé los que parecían ser necesarios... pero no sé si me falte alguno.

Código: Seleccionar todo
p   altermime                       - Herramienta para alterar los adjuntos de c
p   chemical-mime-data              - chemical MIME and file type support for de
v   chemicalmime                    -                                           
p   claws-mail-pgpmime              - PGP/MIME plugin for Claws Mail           
p   claws-mail-smime-plugin         - S/MIME signature/encryption handling for C
i A gnome-mime-data                 - Base de datos de base de MIME y aplicacion
p   libapache2-mod-mime-xattr       - Apache2 module to get MIME info from files
i A libemail-mime-contenttype-perl  - Parse a MIME Content-Type Header         
p   libemail-mime-createhtml-perl   - Multipart HTML Email builder             
i   libemail-mime-creator-perl      - module for simple Email::MIME mail message
i A libemail-mime-encodings-perl    - A unified interface to MIME encoding and d
i   libemail-mime-modifier-perl     - module to modify Email::MIME objects easil
i   libemail-mime-perl              - Easy MIME message parsing                 
i   libfile-mimeinfo-perl           - Perl module to determine file types       
i   libgmime-2.0-2-dev              - MIME library - development files         
p   libgmime-2.0-2-doc              - MIME library - documentation             
i A libgmime-2.0-2a                 - MIME library                             
v   libgmime2-dev                   -                                           
v   libgmime2.1-dev                 -                                           
v   libgmime2.2-doc                 -                                           
p   libgmime2.2a-cil                - CLI binding for the MIME library         
p   libhildonmime-dev               - Hildon desktop MIME type hander - developm
p   libhildonmime0                  - Hildon desktop MIME type hander - runtime
p   libhildonmime0-dbg              - Hildon desktop MIME type hander - debuggin
p   libkmime2                       - KDE MIME interface library               
p   libmime-base32-perl             - Base32 encoder/decoder                   
v   libmime-base64-perl             -                                           
p   libmime-base64-urlsafe-perl     - Perl version of Python's URL-safe base64 c
p   libmime-charset-perl            - Charset Informations for MIME             
p   libmime-encwords-perl           - deal with RFC-1522 encoded words         
p   libmime-explode-perl            - perl MIME::Explode - Perl extension for ex
i   libmime-lite-perl               - Perl5 module for convenient generation of
i   libmime-perl                    - transitional dummy package               
i A libmime-tools-perl              - Perl5 modules for MIME-compliant messages
i A libmime-types-perl              - Perl extension for determining MIME types
p   libmime-types-ruby              - guess MIME type of files                 
v   libmimedir                      -                                           
p   libmimedir-dev                  - Developer files for libmimedir           
v   libmimedir-gnome-dev            -                                           
p   libmimedir-gnome0-dev           - MIME Directory Profile implementation [dev
p   libmimedir-gnome0.4             - MIME Directory Profile implementation [run
p   libmimedir0                     - A library to parse RFC 2425 Directory Info
p   libmimelib1-dev                 - KDE mime library [development]           
p   libmimelib1c2a                  - KDE mime library                         
p   libmimetic-dev                  - C++ MIME library (development)           
p   libmimetic-doc                  - C++ MIME library (documentation)         
p   libmimetic0                     - C++ MIME library (runtime)               
p   libmimetic0-dbg                 - C++ MIME library (debug)                 
v   libpantomime-dev                -                                           
p   libpantomime1.2                 - GNUstep framework for mail handling       
p   libpantomime1.2-dev             - GNUstep framework for mail handling       
p   libvmime-dev                    - a C++ mail library (development files)   
p   libvmime0                       - a C++ mail library (runtime library)     
p   mime-construct                  - Cree/Envíe mensajes MIME desde la consola
i   mime-support                    - Archivos MIME «mime.types» y «mailcap», y
i   mimedecode                      - Decodes transfer encoded text type mime me
p   mimedefang                      - e-mail filter program for sendmail       
p   mimefilter                      - Elimina algunas partes MIME no deseadas de
p   mimetex                         - Conversor de expresiones matemáticas de La
p   php-mail-mime                   - PHP PEAR module for creating MIME messages
p   php-mail-mimedecode             - PHP PEAR module to decode MIME messages   
i A shared-mime-info                - Base de datos y especificaciones compartid
v   sylpheed-claws-gtk2-pgpmime     -                                           
v   sylpheed-claws-gtk2-smime-plugi - 


lo mismo hice al buscar Email
Código: Seleccionar todo
p   archivemail                     - Almacena y comprime o borra sus viejos cor
p   bzr-email                       - Notification email plugin for Bazaar     
p   cgiemail                        - CGI Form-to-Mail converter               
p   egroupware-emailadmin           - web-based groupware suite - e-mail user ad
p   email-reminder                  - Envía recordatorios de eventos por correo
p   git-email                       - fast, scalable, distributed revision contr
p   libcgi-untaint-email-perl       - Input handler for CGI::Untaint to validate
p   libdata-validate-email-perl     - validator for email addresses written in P
p   libemail-abstract-perl          - library that presents unified interface to
i A libemail-address-perl           - RFC 2822 Address Parsing and Creation     
i A libemail-date-format-perl       - Module to generate RFC-2822-valid date str
p   libemail-date-perl              - Perl module for correct formatting of date
p   libemail-filter-perl            - library for creating easy email filters   
p   libemail-find-perl              - Find RFC 822 email addresses in plain text
p   libemail-folder-perl            - read all the messages from a folder as Ema
p   libemail-foldertype-perl        - determine the type of a mail folder       
p   libemail-localdelivery-perl     - Deliver a piece of email - simply         
i A libemail-messageid-perl         - A Perl library for unique mail Message-ID
i A libemail-mime-contenttype-perl  - Parse a MIME Content-Type Header         
p   libemail-mime-createhtml-perl   - Multipart HTML Email builder             
i   libemail-mime-creator-perl      - module for simple Email::MIME mail message
i A libemail-mime-encodings-perl    - A unified interface to MIME encoding and d
i   libemail-mime-modifier-perl     - module to modify Email::MIME objects easil
i   libemail-mime-perl              - Easy MIME message parsing                 
p   libemail-send-io-perl           - Send mail via IO::All                     
p   libemail-send-perl              - Simply Sending Email                     
i A libemail-simple-creator-perl    - Perl module providing a Email::Simple cons
i A libemail-simple-perl            - Simple parsing of RFC2822 message format a
p   libemail-thread-perl            - library providing threading for Email::Sim
p   libemail-valid-loose-perl       - Email::Valid which allows dot immediately
p   libemail-valid-perl             - Check validity of Internet email addresses
p   libregexp-common-email-address- - Regexp::Common extension for matching e-ma
i A openoffice.org-emailmerge       - full-featured office productivity suite --
p   phpgroupware-0.9.16-email       - phpGroupWare E-Mail client module         
v   phpgroupware-email              -                                           
v   python-email                    -                                           
p   rss2email                       - receive RSS feeds by email               
p   sendemail               


y en synaptic tambien busqué Email::MIME, pero me salen todos instalados, menos

libemail-mime-createhtml-perl

tambien ContentType

Código: Seleccionar todo
i A libemail-mime-contenttype-perl  - Parse a MIME Content-Type Header


Modifier

Código: Seleccionar todo
i   libclass-method-modifiers-perl  - Perl module providing method modifiers   
i   libemail-mime-modifier-perl     - module to modify Email::MIME objects easil
proxy_lainux
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2009-04-13 21:38 @943

Publicidad

Notapor explorer » 2009-04-16 12:44 @572

Has puesto
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -MEmail::MIME:: -e 1
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

pero en realidad es
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -MEmail::MIME -e 1
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


En mi aptitude, al seleccionar el paquete libemail-mime-perl, me selecciona de forma automática la instalación de los paquetes
Código: Seleccionar todo
libemail-mime-contenttype-perl
libemail-mime-encodings-perl
libemail-simple-perl
libmime-types-perl

Le doy a instalar, y después pruebo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -MEmail::MIME -e 1
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y ya no aparece ningún error, así que está instalado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor proxy_lainux » 2009-04-16 18:37 @817

pues no, sigue apareciendo lo mismo... :(

Código: Seleccionar todo
sudo aptitude reinstall libemail-mime-perl libemail-mime-encodings-perl libemail-simple-perl libmime-types-perl libemail-mime-contenttype-perl


Código: Seleccionar todo
Se REINSTALARÁN los siguientes paquetes:
  libemail-mime-contenttype-perl libemail-mime-encodings-perl
  libemail-mime-perl libemail-simple-perl libmime-types-perl


Código: Seleccionar todo
Configurando libemail-mime-contenttype-perl (1.014-3) ...
Configurando libemail-mime-encodings-perl (1.311-3) ...
Configurando libemail-simple-perl (2.004-1) ...
Configurando libmime-types-perl (1.27-1) ...
Configurando libemail-mime-perl (1.863-1) ...


Código: Seleccionar todo
 perl -MEmail::MIME -e 1

Can't locate Email/MIME.pm in @INC (@INC contains: /usr/local/lib/perl5/5.10.0/i686-linux /usr/local/lib/perl5/5.10.0 /usr/local/lib/perl5/site_perl/5.10.0/i686-linux /usr/local/lib/perl5/site_perl/5.10.0 .).
BEGIN failed--compilation aborted.


Código: Seleccionar todo
 sudo apt-get install libemail-mime-perl libemail-mime-encodings-perl libemail-simple-perl libmime-types-perl libemail-mime-contenttype-perl


Código: Seleccionar todo
libemail-mime-perl ya está en su versión más reciente.
libemail-mime-encodings-perl ya está en su versión más reciente.
libemail-simple-perl ya está en su versión más reciente.
libmime-types-perl ya está en su versión más reciente.
libemail-mime-contenttype-perl ya está en su versión más reciente.
proxy_lainux
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2009-04-13 21:38 @943

Notapor explorer » 2009-04-16 19:12 @841

Bien... ahora tienes que averiguar dónde los ha instalado.

Es posible que los haya dejado en /usr/local/lib/perl5/5.8.8/... por ejemplo (la versión anterior a la 5.10 que veo que estás usando).

Con el comando dpkg puedes saber qué ha instalado:

Código: Seleccionar todo
hs-980:~# dpkg -L libemail-mime-perl
/.
/usr
/usr/share
/usr/share/man
/usr/share/man/man3
/usr/share/man/man3/Email::MIME.3pm.gz
/usr/share/doc
/usr/share/doc/libemail-mime-perl
/usr/share/doc/libemail-mime-perl/README
/usr/share/doc/libemail-mime-perl/changelog.gz
/usr/share/doc/libemail-mime-perl/changelog.Debian.gz
/usr/share/doc/libemail-mime-perl/copyright
/usr/share/perl5
/usr/share/perl5/Email
/usr/share/perl5/Email/MIME.pm


Prueba a usar el comando find desde el raíz del ordenador, si no lo encuentras a la primera. Tiene que estar en alguno de los directorios de perl, sin duda. Algo así: find / -name MIME.pm

Una vez localizado, solo te queda manipular la variable @INC para que haga uso del módulo.

No puedo ayudarte con mi Debian, porque no he pasado a Perl v5.10. Sigo con el v5.8.8.

Otra cosa, si haces un perl -V verás todos los caminos de @INC. Será una pista para buscar por las variantes de 5.8.8. A mí me sale:
Código: Seleccionar todo
  @INC:
    /etc/perl
    /usr/local/lib/perl/5.8.8
    /usr/local/share/perl/5.8.8
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.8
    /usr/share/perl/5.8
    /usr/local/lib/site_perl
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor proxy_lainux » 2009-04-16 20:39 @902

Hola.

Pues ahora sí... uff, vaya, por fin, jeje... volví a intentar con Makefile.PL y no tuve problemas, después con make, tampoco hubo problemas... pero cuando ejecute make test, todo estuvo bien menos...

Código: Seleccionar todo
t/pod
t/pod-coverage


y solo me apareció esto

Código: Seleccionar todo
All tests successful, 2 test skipped


hice lo mismo con Pod, y me apareció esto

Código: Seleccionar todo
All tests successful, 1 test skipped


pero cuando quise hacer lo mismo con pod-coverage, me apareció esto

Código: Seleccionar todo
t/pod-coverage....Subroutine import redefined at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 84.
Subroutine all_pod_coverage_ok redefined at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 114.
Subroutine pod_coverage_ok redefined at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 152.
Subroutine all_modules redefined at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 201.
Subroutine _starting_points redefined at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 246.
Can't locate object method "no_upwards" via package "File::Spec" (perhaps you forgot to load "File::Spec"?) at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 216.


y cuando instalé

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
libfile-spec-perl
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y copié la carpeta que contenía Spec.pm

me fue igual...

Código: Seleccionar todo
t/pod-coverage....Subroutine import redefined at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 84.
Subroutine all_pod_coverage_ok redefined at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 114.
Subroutine pod_coverage_ok redefined at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 152.
Subroutine all_modules redefined at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 201.
Subroutine _starting_points redefined at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 246.
Can't locate object method "no_upwards" via package "File::Spec" (perhaps you forgot to load "File::Spec"?) at /usr/local/lib/perl5/5.10.0/i686-linux/Test/Pod/Coverage.pm line 216.


Esta vez lo escribí bien ¿cierto? :oops: ... jeje, pero no me dice de ningún error

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -MFile::Spec -e 1
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Bueno, por el momento lo quité e hice make install y me dijo esto

Código: Seleccionar todo
Writing /usr/local/lib/perl5/site_perl/5.10.0/i686-linux/auto/Email/MIME/Attachment/Stripper/.packlist
Appending installation info to /usr/local/lib/perl5/5.10.0/i686-linux/perllocal.pod


¿pero ahora cómo lo ejecuto? ya que no se hizo algún archivo Perl...
proxy_lainux
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2009-04-13 21:38 @943

Notapor explorer » 2009-04-17 03:00 @167

Por eso me encanta usar el comando cpan... porque no hay que escribir tanto como lo has hecho tu :)

Si está todo instalado, pues ya solo te queda escribir programas en Perl... ¡adelante!

De hecho,
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -MEmail::MIME -e 1
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
ya es un programa. Solo tiene una línea. Si al ejecutarlo no dice nada, es que todo está bien.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor proxy_lainux » 2009-04-17 12:42 @571

Hola.

No me había fijado que "Email-MIME-Attachment-Stripper-1.316" es un módulo, no un programa...

Lo que pasa es que quiero saber cómo descargar archivos adjuntos de los correos, y pensé que Attachment, era un programa donde podría estudiar cómo hace eso, jeje, creo que voy a seguir investigando.

Al menos ya tengo instalado el módulo y ya solo me falta encontrar cómo descargar los adjuntos, ¿alguien sabe si hay algún post sobre cómo descargar archivos adjuntos?

Bueno, mientras voy al link de buscar haber si encuentro algo, y como siempre en Google...

salu2 y muchas gracias por la ayuda
:D
proxy_lainux
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2009-04-13 21:38 @943

Notapor explorer » 2009-04-17 12:59 @582

En la propia distribución de Email::MIME hay un test, el t/2.t, que muestra, aunque de forma un poco oculta entre tanto código, que con 3 líneas, lo haces.

Algo así (no probado):

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Email::MIME;
open IN, "mi_correo_electronico.txt" or die $!;
undef $/;
my $string = <IN>;
my $obj = Email::MIME->new($string);

my @parts = ($obj->parts)[0]->parts;   # Partes que tiene el correo electrónico
my $filename = $parts[0]->filename(1); # Nombre del primer adjunto
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2009-04-17 14:47 @657

No tenía idea alguna de que se podía hacer con Email::MIME, por eso el módulo Email::MIME::Attachment::Stripper:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use strict;
use Email::MIME::Attachment::Stripper;
my $correo = Email::MIME::Attachment::Stripper->new("/path/a/mi_correo");

my $msg = $correo->message;
my @attachments = $stripper->attachments;
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Claro, eso es después de bajar el correo con Net::POP3 y guardarlo en disco.
@attachments tiene un formato, es un array de hashes (está en la documentación del módulo).
Queda en tus manos decidir cuál usar, el de Email::MIME parece muy fácil... pero se me hace que Email::MIME::Attachment::Stripper trabaja mejor los correos con muchos attachments; Yo usaría Email::MIME para no tener que estar sujeto a tantas dependencias (pero ese soy yo).

De pronto hay que preguntarle a Ricardo SIGNES por qué lo ha hecho así :lol:
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor explorer » 2009-04-17 15:48 @700

El uso de Email::MIME::Attachment::Stripper, desde luego, es la opción más cómoda si solo se quieren extraer adjuntos de un correo electrónico.

Pero no lo es si lo que se pretende es aprender a entender qué es un correo electrónico que contiene múltiples partes MIME.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 18 invitados