Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > To find size of an attachment in a POP3 server

Reply
Thread Tools

To find size of an attachment in a POP3 server

 
 
satyakm79@gmail.com
Guest
Posts: n/a
 
      09-05-2007
Hi all,

I am trying to retrieve all the attachments from a POP3 server. But
before retrieving I would like to get the size of the attachment and
compare it with the available disk space in my local station and then
retrieve. Can anyone suggest me how to find the size of an attachment?
I am able to find the available disk space using File::Find. Plz find
my script below :

#!/usr/bin/perl

use Carp;
use Email::MIME;
use File::Basename;
use Net:OP3;
use File::Find;

my $server = '192.168.100.254';
my $receiveruname = 'admin';
my $password = 'admin';
my $attachment_dir = 'D:\\Attachments\\';

my $pop = Net:OP3->new($server);
croak "Couldn't connect to the server.\n\n" unless $pop;
my $num_messages = $pop->login( $receiveruname, $password );
croak "Connection trouble network password user ..."
unless defined $num_messages;

for my $i ( 1 .. $num_messages ) {

my $aref = $pop->get($i);
my $em = Email::MIME->new( join '', @$aref );

for ( my @parts = $em->parts ) {
print $_->content_type, "\n";
next unless $_->content_type =~ m(^application/octet-stream)i;
my $filename = basename( $_->filename || '' );
my $basefilename = $filename || 'UNNAMED';

my $filesize = -s "$filename" ;
print "\nFilesize of $filename = $filesize
\n";

if ( $filename eq "null" ) {
$pop->delete($i); # To avoid
downloading file "null" of 0KB
}
else {
open my $fh, ">", "$attachment_dir/
$filename" or croak $!;
binmode $fh;
print $fh $_->body;
$pop->delete($i);
}

}
}

$pop->quit;

 
Reply With Quote
 
 
 
 
John W. Krahn
Guest
Posts: n/a
 
      09-05-2007
http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
>
> I am trying to retrieve all the attachments from a POP3 server. But
> before retrieving I would like to get the size of the attachment and
> compare it with the available disk space in my local station and then
> retrieve.


It can't be done. You can get the size of the email message before retrieving it:

perldoc Net:OP3
[ snip ]
list ( [ MSGNUM ] )
If called with an argument the "list" returns the size of the message
in octets.

If called without arguments a reference to a hash is returned. The
keys will be the "MSGNUM"ís of all undeleted messages and the values
will be their size in octets.


But attachments can be encoded/compressed/encrypted which can change the size
of the original file.

> Can anyone suggest me how to find the size of an attachment?


Download it, unencode it, uncompress it and then you will have its size.

Or there may be headers with the attachment that describe the file size so you
have to at least read enough of the message to get all of the headers (if you
trust that the file sizes in the headers are correct.) [Think DOS attack.]



John
--
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order. -- Larry Wall
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Can Net::IMAP::Simple or Net::POP3 be used with Email::MIME::Attachment::Stripper? Ted Byers Perl Misc 0 03-20-2009 04:38 PM
Fetch an Email attachment file through POP3 Deepa Rajendran Ruby 0 02-23-2009 05:30 AM
POP3 - Saving an image attachment only. Sick Monkey Python 0 08-24-2007 08:06 PM
what smtp and pop3 server to run on linux for creating mail server pk Java 3 02-13-2006 10:27 AM
Pop3 autosave attachment. p-nut Python 1 06-04-2004 03:00 PM



Advertisments