Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re: Geting attached files of emails (POP3)

by roboticus (Chancellor)
on Dec 27, 2006 at 15:48 UTC ( #591867=note: print w/replies, xml ) Need Help??

in reply to Geting attached files of emails (POP3)


In what way doesn't it work? Perhaps your "next" statement is passing over your attachments because of incorrect content type? Perhaps your EMail didn't have attachments?

Ya might wanna review How (Not) To Ask A Question and I know what I mean. Why don't you? and update your post... 8^)


  • Comment on Re: Geting attached files of emails (POP3)

Replies are listed 'Best First'.
Re^2: Geting attached files of emails (POP3)
by MiDgArD (Novice) on Dec 27, 2006 at 16:45 UTC
    Yes, the message posses a attached file "photo.jpg"
    When I execute he under Shell, he return this:

    Need a message at test.cgi line 23

    Line 23: $m = Mail::Message::Attachment::Stripper->new($msg);

    In the line 14: print "$msg";

    He shown the message as text plain
    Exist another perl module?

      Based on that error message, I'd guess that either $msg doesn't contain a message at all (i.e., perhaps the line "$msg=$pop->Retrieve(1);" failed), or that it's in the wrong format. (The docs for Mail::POP3Client doesn't seem to tell what format the Retrieve method returns, but the docs for Mail::Message::Attachment::Stripper states that it wants the message in Mail::Message format.)

      I'd suggest:

      1) Using strict and warnings at the start of your program.

      2) putting in a bit of error-checking, specifically checking to see if the Retrieve method fails, and whether it returns a properly formatted message...

      I hope this helps...


        NEW CODE: #!/usr/bin/perl

        my $homedir='/home/celflog/www/teste';

        use strict;

        use Mail::POP3Client;

        use IO::File;
        use Mail::Message::Attachment::Stripper;

        my $pop = new Mail::POP3Client(
        USER => 'myuser',
        PASSWORD => "mypass",
        HOST => ""

        my $msg=$pop->Retrieve(1), or die "$_\n";

        print "$msg";

        my $m = Mail::Message::Attachment::Stripper->new($msg);
        my @attachments = $m->attachments;

        foreach my $a(@attachments) {

        next if $a->{content_type} !~ /jpeg|jpg/i;

        # Ignore invalids attached files
        my $f = new IO::File "$homedir" . $a->{filename}, "w" or die "Can not create file!";

        print $f $a->{payload};


        He continue showing: Need a message at teste.cgi line 25

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://591867]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (4)
As of 2019-12-06 02:40 GMT
Find Nodes?
    Voting Booth?
    Strict and warnings: which comes first?

    Results (154 votes). Check out past polls.