Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit b71249d5 authored by Wolf-Martell Montwé's avatar Wolf-Martell Montwé Committed by GitHub
Browse files

Merge pull request #9589 from NWuensche/fix/outlook_header_newline

Prevent newline in header
parents 85735894 b9378269
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
package com.fsck.k9.message.html

/**
 * Available HTML-Tags for creating HTML in E-Mails
 */
enum class HTMLTag(val html: String) {
    DIV("div"),
    SPAN("span"),
}
+3 −2
Original line number Diff line number Diff line
@@ -46,7 +46,8 @@ object HtmlConverter {
     * Convert a plain text string into an HTML fragment.
     */
    @JvmStatic
    fun textToHtmlFragment(text: String): String {
        return TextToHtml.toHtmlFragment(text, retainOriginalWhitespace = false)
    @JvmOverloads
    fun textToHtmlFragment(text: String, htmlTag: HTMLTag = HTMLTag.DIV): String {
        return TextToHtml.toHtmlFragment(text, retainOriginalWhitespace = false, htmlTag)
    }
}
+5 −4
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ class TextToHtml private constructor(
    private val text: CharSequence,
    private val html: StringBuilder,
    private val retainOriginalWhitespace: Boolean,
    private val htmlTag: HTMLTag = HTMLTag.DIV,
) {
    fun appendAsHtmlFragment() {
        appendHtmlPrefix()
@@ -59,11 +60,11 @@ class TextToHtml private constructor(
    }

    private fun appendHtmlPrefix() {
        html.append("""<div dir="auto">""")
        html.append("""<${htmlTag.html} dir="auto">""")
    }

    private fun appendHtmlSuffix() {
        html.append("</div>")
        html.append("</${htmlTag.html}>")
    }

    private fun appendHtmlEncoded(startIndex: Int, endIndex: Int) {
@@ -151,9 +152,9 @@ class TextToHtml private constructor(
        }

        @JvmStatic
        fun toHtmlFragment(text: CharSequence, retainOriginalWhitespace: Boolean): String {
        fun toHtmlFragment(text: CharSequence, retainOriginalWhitespace: Boolean, htmlTag: HTMLTag): String {
            val html = StringBuilder(text.length + TEXT_TO_HTML_EXTRA_BUFFER_LENGTH)
            TextToHtml(text, html, retainOriginalWhitespace).appendAsHtmlFragment()
            TextToHtml(text, html, retainOriginalWhitespace, htmlTag).appendAsHtmlFragment()
            return html.toString()
        }
    }
+8 −4
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ import java.util.regex.Pattern;

import com.fsck.k9.CoreResourceProvider;
import app.k9mail.legacy.di.DI;
import com.fsck.k9.message.html.HTMLTag;
import net.thunderbird.core.android.account.QuoteStyle;
import net.thunderbird.core.logging.legacy.Log;
import com.fsck.k9.mail.Address;
@@ -68,12 +69,14 @@ public class HtmlQuoteCreator {
            insertable.insertIntoQuotedFooter(footer);
        } else if (quoteStyle == QuoteStyle.HEADER) {

            HTMLTag span = HTMLTag.SPAN; //Fixes #9236

            StringBuilder header = new StringBuilder();
            header.append("<div style='font-size:10.0pt;font-family:\"Tahoma\",\"sans-serif\";padding:3.0pt 0in 0in 0in'>\r\n");
            header.append("<hr style='border:none;border-top:solid #E1E1E1 1.0pt'>\r\n"); // This gets converted into a horizontal line during html to text conversion.
            if (originalMessage.getFrom() != null && fromAddress.length() != 0) {
                header.append("<b>").append(resourceProvider.messageHeaderFrom()).append("</b> ")
                        .append(HtmlConverter.textToHtmlFragment(fromAddress))
                        .append(HtmlConverter.textToHtmlFragment(fromAddress, span))
                        .append("<br>\r\n");
            }
            if (sentDate.length() != 0) {
@@ -83,17 +86,18 @@ public class HtmlQuoteCreator {
            }
            if (originalMessage.getRecipients(RecipientType.TO) != null && originalMessage.getRecipients(RecipientType.TO).length != 0) {
                header.append("<b>").append(resourceProvider.messageHeaderTo()).append("</b> ")
                        .append(HtmlConverter.textToHtmlFragment(Address.toString(originalMessage.getRecipients(RecipientType.TO))))
                        .append(HtmlConverter.textToHtmlFragment(Address.toString(originalMessage.getRecipients(RecipientType.TO)),
                            span))
                        .append("<br>\r\n");
            }
            if (originalMessage.getRecipients(RecipientType.CC) != null && originalMessage.getRecipients(RecipientType.CC).length != 0) {
                header.append("<b>").append(resourceProvider.messageHeaderCc()).append("</b> ")
                        .append(HtmlConverter.textToHtmlFragment(Address.toString(originalMessage.getRecipients(RecipientType.CC))))
                        .append(HtmlConverter.textToHtmlFragment(Address.toString(originalMessage.getRecipients(RecipientType.CC)), span))
                        .append("<br>\r\n");
            }
            if (originalMessage.getSubject() != null) {
                header.append("<b>").append(resourceProvider.messageHeaderSubject()).append("</b> ")
                        .append(HtmlConverter.textToHtmlFragment(originalMessage.getSubject()))
                        .append(HtmlConverter.textToHtmlFragment(originalMessage.getSubject(), span))
                        .append("<br>\r\n");
            }
            header.append("</div>\r\n");