in reply to RE: about MIME::Base64
in thread about MIME::Base64

Thank you,But No effect.I had read the documents on
MIME::Base64 coming with Perl5.6 before I posted.Sure,I
have tried to use 57*n ...,but the results was same with
without it at all!
keep puzzled!:(

Replies are listed 'Best First'.
RE: RE: RE: about MIME::Base64
by tenatious (Beadle) on Aug 25, 2000 at 08:19 UTC
    I don't know what the problem is. I looked through MIME::Lite, and the length of the strings that are encoded is set to 45. So I threw together the following program using a 35k jpeg to test. Maybe the problem is the file is too short?
    #!/usr/bin/perl use MIME::Base64; use MIME::Lite; open FILE, "jpg/attachment-start.jpg"; while (read (FILE,$buf,45)) { $added .= encode_base64($buf); } open OUT1, ">blah1"; print OUT1 $added; close FILE; close OUT1; $msg = MIME::Lite->new(From => "me\@myhost.com", To => "blah\@blah.com", Type=> "image/jpg", Encoding =>"base64", Path => "jpg/attachment-start.jpg"); $message = $msg->as_string; open OUT2, ">blah2"; print OUT2 $message; close OUT2;
    then I ran it, and deleted the header... yes, I'm sure I should have used $message = $msg->body_as_string or something like that, but I didn't.

    then i did the following. ~$ diff blah1 blah2

    There was no output. It works for a file size of 35k. Perhaps your file is too short?

    Update: I slept on it and remembered that I left something out. If you set the "paranoid" flag in MIME::Lite, it will use it's own encoding scheme instead of calling MIME::Base64:encode_base64, as it does default, so this kind of behavior is really strange. The only difference in the way you are calling it and the way MIME::Lite calls it is that it calls it with a buffer size of (read (FH,$buf,45)) rather than (read (FH,$buf,1024)). So I stand by my earlier post... try setting the buffer size to 57*1.