problems with decoding: resulting image is corrupt

From: Bjorn Jensen (b.d.jen_removethissen_at_gmxandthis.net)
Date: 03/21/05


Date: Mon, 21 Mar 2005 23:19:08 +0100

Hello!
My resulting image har nearly same size of original (but not exact) and the
nu.jpg can be shown,
but it is modified so much, that it look totally different.... why? what to
do?
Greetings Bjorn!

============================
use strict;
use Net::POP3;
use MIME::Base64;

my $username = 'user1';
my $password = 'userpw';
my $pop = Net::POP3->new('mailme.org', Timeout => 60);

if ($pop->login($username, $password) > 0) {
    my $msgnums = $pop->list; # hashref of msgnum => size
    foreach my $msgnum (keys %$msgnums) {
        my $mailfile = 'mail'.$msgnum.".txt";
        open(M, ">$mailfile") or die "Error\tCouldn't open $mailfile, $!";
        print "msg $msgnum\n";
        my $msg = $pop->get($msgnum);
        #print @$msg;
        print M @$msg;
        #$pop->delete($msgnum);
        close(M);
    }
}

$pop->quit;
my $b64str;
open(UD, ">nu.jpg") or die "$!";

open(IND, "<mail2.txt") or die "$!";
my $part2decode = 0;
my $line = 0;

while(<IND>) {
  if ( /Content-Disposition/i ) {
    $part2decode++;
  }
  if ( $part2decode ) {
    $line++;
  }
  if ( /Boundary/ ) {
    $part2decode = 0;
  }
  if ( $part2decode && $line > 1 ) {
    my $encoded = $_;

    my $decoded = decode_base64($encoded);
    print UD $decoded;
  }
}
close(UD);
close(IND);