diff --git a/mozilla/content/base/public/nsIDocumentEncoder.h b/mozilla/content/base/public/nsIDocumentEncoder.h index affc6ddf05e..bb4e60ace5f 100644 --- a/mozilla/content/base/public/nsIDocumentEncoder.h +++ b/mozilla/content/base/public/nsIDocumentEncoder.h @@ -156,7 +156,11 @@ public: // Output the content of noframes elements (only for serializing // to plaintext). - OutputNoFramesContent = 4096 + OutputNoFramesContent = 4096, + + // Don't allow any formatting nodes (e.g.
, ) inside a
.
+    // This is used primarily by mail.
+    OutputNoFormattingInPre = 8192
   };
 
   /**
diff --git a/mozilla/content/base/src/nsHTMLContentSerializer.cpp b/mozilla/content/base/src/nsHTMLContentSerializer.cpp
index e1ed60f5752..209d8f07fd1 100644
--- a/mozilla/content/base/src/nsHTMLContentSerializer.cpp
+++ b/mozilla/content/base/src/nsHTMLContentSerializer.cpp
@@ -427,6 +427,13 @@ nsHTMLContentSerializer::AppendElementStart(nsIDOMElement *aElement,
   nsCOMPtr name;
   content->GetTag(*getter_AddRefs(name));
 
+  if (name.get() == nsHTMLAtoms::br && mPreLevel > 0
+      && (mFlags & nsIDocumentEncoder::OutputNoFormattingInPre)) {
+    AppendToString(mLineBreak, aStr);
+    mColPos = 0;
+    return NS_OK;
+  }
+
   if (name.get() == nsHTMLAtoms::body) {
     mInBody = PR_TRUE;
   }
diff --git a/mozilla/mailnews/compose/src/nsMsgSend.cpp b/mozilla/mailnews/compose/src/nsMsgSend.cpp
index e662375020e..6416f8405c5 100644
--- a/mozilla/mailnews/compose/src/nsMsgSend.cpp
+++ b/mozilla/mailnews/compose/src/nsMsgSend.cpp
@@ -1384,7 +1384,7 @@ nsMsgComposeAndSend::GetBodyFromEditor()
   // Query the editor, get the body of HTML!
   //
   nsString  format; format.AssignWithConversion(TEXT_HTML);
-  PRUint32  flags = nsIDocumentEncoder::OutputFormatted;
+  PRUint32  flags = nsIDocumentEncoder::OutputFormatted  | nsIDocumentEncoder::OutputNoFormattingInPre;
   PRUnichar *bodyText = nsnull;
   nsresult rv;
   PRUnichar *origHTMLBody = nsnull;