import xml.etree.ElementTree as etree
 import io
 import enum
+from contextlib import contextmanager
 from collections import namedtuple, OrderedDict
 from markdown.extensions import Extension
 from markdown.blockprocessors import BlockProcessor
         def __init__(self, parser):
             super().__init__(parser)
             self._title = None
+            self._disable = False
 
         def test(self, parent, blocks):
+            if self._disable:
+                return False
+
             if markdown.util.nearing_recursion_limit():
                 return False
 
             self.parser.parseChunk(admonition, self._title)
 
             admonition[0].set("class", "admonition-title")
-            self.parser.parseChunk(
-                admonition, "\n".join(self.clean(line) for line in quotelines)
-            )
+            with self.disable():
+                self.parser.parseChunk(
+                    admonition, "\n".join(quotelines)
+                )
+
+        @contextmanager
+        def disable(self):
+            self._disable = True
+            yield True
+            self._disable = False
 
         @classmethod
         def clean(klass, line):
             p = quote.p.extract()
             assert p.contents[1].name == "strong"
 
+        @pytest.mark.converter
+        def test_converter_attribution_to_admonition_with_blockquote(
+            self, fakepath, fakefilefactory
+        ):
+            mailparts = (
+                "Regarding whatever",
+                "> blockquote line1",
+                "> blockquote line2",
+                "> ",
+                "> new para with **bold** text",
+            )
+            with fakefilefactory(
+                fakepath, content="\n".join(mailparts)
+            ) as draft_f:
+                convert_markdown_to_html(draft_f, filefactory=fakefilefactory)
+
+            soup = bs4.BeautifulSoup(
+                fakefilefactory[fakepath.with_suffix(".html")].read(),
+                "html.parser",
+            )
+            quote = soup.select_one("div.admonition.quote")
+            assert quote.blockquote
+
         @pytest.mark.converter
         def test_converter_attribution_to_admonition_multiple(
             self, fakepath, fakefilefactory
 
     margin: 0.5em;
 }
 
+.block {
+    padding: 0 0.5em;
+    margin: 0;
+    font-style: italic;
+    border-left: 2px solid #eee;
+}
+blockquote, .blockquote {
+    padding: 0 0.5em;
+    margin: 0;
+    font-style: italic;
+    border-left: 2px solid #666;
+    color: #666;
+    font-size: 80%;
+}
+
+.admonition blockquote {
+    font-size: inherit;
+    border-left: inherit;
+}
+
 table, th, td {
     border-collapse: collapse;
     border: 1px solid #999;
 a { text-decoration:none; color:#3a5dae; }
 a:visited { color:#3a5dae; }
 a:hover { text-decoration:underline; }
-.block {
-    padding: 0 0.5em;
-    margin: 0;
-    font-style: italic;
-    border-left: 2px solid #eee;
-}
-blockquote {
-    padding: 0 0.5em;
-    margin: 0;
-    font-style: italic;
-    border-left: 2px solid #666;
-    color: #666;
-    font-size: 80%;
-}
 /*.quotelead {
     margin-bottom: -1em;
     font-size: 80%;