From: <fd...@us...> - 2003-09-30 10:06:45
|
Update of /cvsroot/columba/columba/src/mail/independent/org/columba/mail/composer In directory sc8-pr-cvs1:/tmp/cvs-serv19357/src/mail/independent/org/columba/mail/composer Modified Files: MessageBuilder.java Log Message: [bug]bodytext was decoded correctly Index: MessageBuilder.java =================================================================== RCS file: /cvsroot/columba/columba/src/mail/independent/org/columba/mail/composer/MessageBuilder.java,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** MessageBuilder.java 26 Sep 2003 20:00:41 -0000 1.30 --- MessageBuilder.java 30 Sep 2003 10:06:41 -0000 1.31 *************** *** 28,32 **** import org.columba.addressbook.parser.ListParser; import org.columba.core.io.StreamUtils; - import org.columba.core.logging.ColumbaLogger; import org.columba.core.xml.XmlElement; import org.columba.mail.config.AccountItem; --- 28,31 ---- *************** *** 320,347 **** * reply/forward. */ ! private static String createBodyText(ColumbaMessage message) throws IOException { CharSequence bodyText = ""; ! StreamableMimePart bodyPart = (StreamableMimePart) message.getBodyPart(); ! String charsetName = bodyPart.getHeader().getContentParameter("charset"); String encoding = bodyPart.getHeader().getContentTransferEncoding(); ! InputStream body = bodyPart.getInputStream(); ! if( encoding != null ) { ! if( encoding.equals("quoted-printable")) { ! body = new QuotedPrintableDecoderInputStream( body ); ! } else if( encoding.equals("base64")) { ! body = new Base64DecoderInputStream( body ); } } ! ! if( charsetName != null ) { Charset charset; try { ! charset = Charset.forName( charsetName ); ! } catch ( UnsupportedCharsetException e ) { ! charset = Charset.forName( System.getProperty("file.encoding")); } ! body = new CharsetDecoderInputStream( body, charset ); } --- 319,349 ---- * reply/forward. */ ! private static String createBodyText(MimePart mimePart) ! throws IOException { CharSequence bodyText = ""; ! StreamableMimePart bodyPart = ! (StreamableMimePart) mimePart; ! String charsetName = ! bodyPart.getHeader().getContentParameter("charset"); String encoding = bodyPart.getHeader().getContentTransferEncoding(); ! InputStream body = bodyPart.getInputStream(); ! if (encoding != null) { ! if (encoding.equals("quoted-printable")) { ! body = new QuotedPrintableDecoderInputStream(body); ! } else if (encoding.equals("base64")) { ! body = new Base64DecoderInputStream(body); } } ! ! if (charsetName != null) { Charset charset; try { ! charset = Charset.forName(charsetName); ! } catch (UnsupportedCharsetException e) { ! charset = Charset.forName(System.getProperty("file.encoding")); } ! body = new CharsetDecoderInputStream(body, charset); } *************** *** 363,369 **** */ private static String createQuotedBodyText( ! ColumbaMessage message, ! boolean html) throws IOException { ! String bodyText = createBodyText(message); // Quote according model type (text/html) --- 365,372 ---- */ private static String createQuotedBodyText( ! MimePart mimePart, ! boolean html) ! throws IOException { ! String bodyText = createBodyText(mimePart); // Quote according model type (text/html) *************** *** 374,378 **** // TODO: Implement quoting (font color, stylesheet, blockquote???) ! /* String lcase = bodyText.toLowerCase(); --- 377,381 ---- // TODO: Implement quoting (font color, stylesheet, blockquote???) ! /* String lcase = bodyText.toLowerCase(); *************** *** 389,393 **** buf.append(quoteEnd); buf.append(bodyText.substring(end)); ! ColumbaLogger.log.debug("Source:\n" + bodyText); ColumbaLogger.log.debug("Result:\n" + buf.toString()); --- 392,396 ---- buf.append(quoteEnd); buf.append(bodyText.substring(end)); ! ColumbaLogger.log.debug("Source:\n" + bodyText); ColumbaLogger.log.debug("Result:\n" + buf.toString()); *************** *** 395,400 **** quotedBodyText = buf.toString(); */ ! quotedBodyText = bodyText; ! } else { // plain text --- 398,403 ---- quotedBodyText = buf.toString(); */ ! quotedBodyText = bodyText; ! } else { // plain text *************** *** 425,429 **** ColumbaMessage message, ComposerModel model, ! int operation) throws IOException { ColumbaHeader header = (ColumbaHeader) message.getHeaderInterface(); --- 428,433 ---- ColumbaMessage message, ComposerModel model, ! int operation) ! throws IOException { ColumbaHeader header = (ColumbaHeader) message.getHeaderInterface(); *************** *** 507,513 **** } else { // prepend "> " to every line of the bodytext ! String bodyText = createQuotedBodyText( ! message, ! model.isHtml()); if (bodyText == null) { bodyText = "[Error parsing bodytext]"; --- 511,515 ---- } else { // prepend "> " to every line of the bodytext ! String bodyText = createQuotedBodyText(message.getBodyPart(), model.isHtml()); if (bodyText == null) { bodyText = "[Error parsing bodytext]"; *************** *** 539,543 **** ComposerModel model, String templateBody, ! boolean htmlTemplate) throws IOException { ColumbaHeader header = (ColumbaHeader) message.getHeaderInterface(); --- 541,546 ---- ComposerModel model, String templateBody, ! boolean htmlTemplate) ! throws IOException { ColumbaHeader header = (ColumbaHeader) message.getHeaderInterface(); *************** *** 576,584 **** // prepend "> " to every line of the bodytext ! String bodyText = createQuotedBodyText(message, model.isHtml()); if (bodyText == null) { bodyText = "[Error parsing bodytext]"; } ! if (!htmlTemplate && model.isHtml()) { // conversion to html necessary --- 579,587 ---- // prepend "> " to every line of the bodytext ! String bodyText = createQuotedBodyText(message.getBodyPart(), model.isHtml()); if (bodyText == null) { bodyText = "[Error parsing bodytext]"; } ! if (!htmlTemplate && model.isHtml()) { // conversion to html necessary *************** *** 588,592 **** templateBody = HtmlParser.htmlToText(templateBody); } ! StringBuffer buf; if (model.isHtml()) { --- 591,595 ---- templateBody = HtmlParser.htmlToText(templateBody); } ! StringBuffer buf; if (model.isHtml()) { *************** *** 595,599 **** int pos = lcase.indexOf("</body>"); if (pos < 0) { ! pos = bodyText.length(); } buf = new StringBuffer(bodyText.substring(0, pos)); --- 598,602 ---- int pos = lcase.indexOf("</body>"); if (pos < 0) { ! pos = bodyText.length(); } buf = new StringBuffer(bodyText.substring(0, pos)); *************** *** 658,662 **** model.setHtml(false); } ! model.setBodyText(bodyPart.getBody().toString()); } --- 661,667 ---- model.setHtml(false); } ! ! //model.setBodyText(bodyPart.getBody().toString()); ! model.setBodyText( createBodyText( bodyPart) ); } |