i've done it in another way (with the same results :-( )

 def partworker(p,mp)
   if p.multipart? then
     mp.part 'multipart/related' do |mmp|
     p.parts.each do |pp|
     partworker(pp,mmp)
    end
    end
   else
     mp.part :content_type => p.content_type,
             :disposition => p.disposition,
             :transfer_encoding => p.transfer_encoding,
             :body => p.body
   end  
 end
  
def mailer(mail)
    subject    mail.subject
    recipients mail.to[0]
    from       mail.from[0]
    sent_on    Time.now
   if  mail.multipart? then
       part 'multipart/related' do |mp|   
            mail.parts.each do |p|
              partworker(p,mp)
          end
      end
  end
  
end