base64-Encoding breaks smime-encrypted emaildata

Posted by Streuner on Stack Overflow See other posts from Stack Overflow or by Streuner
Published on 2012-03-15T13:19:41Z Indexed on 2012/03/26 17:29 UTC
Read the original article Hit count: 229

Filed under:
|

I'm using Mime::Lite to create and send E-Mails. Now I need to add support for S/Mime-encryption and finally could encrypt my E-Mail (the only Perllib I could install seems broken, so I'm using a systemcall and openssl smime), but when I try to create a mime-object with it, the E-Mail will be broken as soon as I set the Content-Transfer-Encoding to base64. To make it even more curious, it happens only if I set it via $myMessage->attr. If I'm using the constructor ->new everything is fine, besides a little warning which I suppress by using MIME::Lite->quiet(1);

Is it a bug or my fault? Here are the two ways how I create the mime-object.

  1. Setting the Content-Transfer-Encoding via construtor and suppress the warning:

    MIME::Lite->quiet(1); 
    my $msgEncr = MIME::Lite->new(From   =>'[email protected]',
                            To     => '[email protected]',
                           Subject => 'SMIME Test',
                           Data    => $myEncryptedMessage,
                           'Content-Transfer-Encoding' => 'base64');
    
    $msgEncr->attr('Content-Disposition'        =>  'attachment');
    $msgEncr->attr('Content-Disposition.filename'   =>  'smime.p7m');
    $msgEncr->attr('Content-Type' => 'application/x-pkcs7-mime');
    $msgEncr->attr('Content-Type.smime-type' => 'enveloped-data');
    $msgEncr->attr('Content-Type.name' => 'smime.p7m');
    
    $msgEncr->send;             
    
    MIME::Lite->quiet(0);
    
  2. Setting the Content-Transfer-Encoding via $myMessage->attr which breaks the encrypted Data, but won't cause a warning:

    my $msgEncr = MIME::Lite->new(From  => '[email protected]',
                           To         => '[email protected]',
                           Subject    => 'SMIME Test',
                           Data => $myEncryptedMessage);
    
    $msgEncr->attr('Content-Disposition'        =>  'attachment');
    $msgEncr->attr('Content-Disposition.filename'       =>  'smime.p7m');
    $msgEncr->attr('Content-Type' => 'application/x-pkcs7-mime');
    $msgEncr->attr('Content-Type.smime-type' => 'enveloped-data');
    $msgEncr->attr('Content-Type.name' => 'smime.p7m');
    $msgEncr->attr('Content-Transfer-Encoding' => 'base64');
    
    $msgEncr->send; 
    

I just don't get why my message is broken when I'm using the attribute-setter. Thanks in advance for your help!

Besides that i'm unable to attach any file to this E-Mail without breaking the encrypted message again.

© Stack Overflow or respective owner

Related posts about perl

Related posts about smime