Buggy code:
public class MessageComposer { private ComposerModel model ; private int accountUid ; public MessageComposer ( ComposerModel model ) { } protected SendableHeader initHeader ( ) { } private boolean needQPEncoding ( String input ) { } protected String getSignature ( IdentityItem item ) { } private StreamableMimePart composeMultipartAlternativeMimePart ( ) { } private StreamableMimePart composeHtmlMimePart ( ) { } private StreamableMimePart composeTextMimePart ( ) { } public SendableMessage compose ( WorkerStatusController workerStatusController ) throws Exception { this . accountUid = model . getAccountItem ( ) . getUid ( ) ; workerStatusController . setDisplayText ( "Composing<seq2seq4repair_space>Message..." ) ; MimeTreeRenderer renderer = MimeTreeRenderer . getInstance ( ) ; SendableMessage message = new SendableMessage ( ) ; StringBuffer composedMessage = new StringBuffer ( ) ; SendableHeader header = initHeader ( ) ; MimePart root = null ; List attachments = model . getAttachments ( ) ; List mimeParts = new ArrayList ( ) ; Iterator ite = attachments . iterator ( ) ; while ( ite . hasNext ( ) ) { mimeParts . add ( ite . next ( ) ) ; } StreamableMimePart body ; if ( model . isHtml ( ) ) { XmlElement composerOptions = MailConfig . getComposerOptionsConfig ( ) . getRoot ( ) . getElement ( "//options" ) ; XmlElement html = composerOptions . getElement ( "html" ) ; if ( html == null ) { html = composerOptions . addSubElement ( "html" ) ; } String multipart = html . getAttribute ( "send_as_multipart" , "true" ) ; if ( multipart . equals ( "true" ) ) { body = composeMultipartAlternativeMimePart ( ) ; } else { body = composeHtmlMimePart ( ) ; } } else { body = composeTextMimePart ( ) ; } if ( body != null ) mimeParts . add ( 0 , body ) ; if ( ( mimeParts . size ( ) ) > 1 ) { root = new MimePart ( new MimeHeader ( "multipart" , "mixed" ) ) ; for ( int i = 0 ; i < ( mimeParts . size ( ) ) ; i ++ ) { root . addChild ( ( ( StreamableMimePart ) ( mimeParts . get ( i ) ) ) ) ; } } else { root = ( ( MimePart ) ( mimeParts . get ( 0 ) ) ) ; } if ( model . isSignMessage ( ) ) { PGPItem item = model . getAccountItem ( ) . getPGPItem ( ) ; item . set ( "id" , model . getAccountItem ( ) . getIdentityItem ( ) . get ( "address" ) ) ; PGPMimePart signPart = new PGPMimePart ( new MimeHeader ( "multipart" , "signed" ) , item ) ; signPart . addChild ( root ) ; root = signPart ; } if ( model . isEncryptMessage ( ) ) { PGPItem item = model . getAccountItem ( ) . getPGPItem ( ) ; item . set ( "id" , model . getRCPTVector ( ) . get ( 0 ) . toString ( ) ) ; PGPMimePart signPart = new PGPMimePart ( new MimeHeader ( "multipart" , "encrypted" ) , item ) ; signPart . addChild ( root ) ; root = signPart ; } header . setRecipients ( model . getRCPTVector ( ) ) ; String composedBody ; <START_BUG> header . set ( "columba.attachment" , new Boolean ( true ) ) ; <END_BUG> root . getHeader ( ) . getHeader ( ) . merge ( header . getHeader ( ) ) ; InputStream in = renderer . renderMimePart ( root ) ; message . setSourceStream ( in ) ; int size = ( in . available ( ) ) // 1024 ; header . set ( "columba.size" , new Integer ( size ) ) ; message . setHeader ( header ) ; message . setAccountUid ( accountUid ) ; return message ; } }

Fix:
header . set ( "columba.attachment" , Boolean . TRUE ) ;