seamustuohy / RTFDE

RTFDE: RTF De-Encapsulator - A python3 library for extracting encapsulated `HTML` & `plain text` content from the `RTF` bodies of .msg files.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Previous tokens: Token('CONTROLWORD', '\\plain')

marcboivin opened this issue · comments

Here is some offending RTF I found in a legitimate mail coming from somewhere in europe.

If trows this error :

Traceback (most recent call last):
  File "/usr/local/anaconda3/lib/python3.8/site-packages/lark/lexer.py", line 486, in lex
    token = self.root_lexer.next_token(lexer_state, parser_state)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/lark/lexer.py", line 398, in next_token
    raise UnexpectedCharacters(lex_state.text, line_ctr.char_pos, line_ctr.line, line_ctr.column,
lark.exceptions.UnexpectedCharacters: No terminal matches '\' in the current parser context, at line 47 col 112

0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }
                                        ^
Expected one of:
	* OPENPAREN
	* TEXT
	* CONTROLSYMBOL
	* CONTROLWORD
	* RTFESCAPE
	* CLOSEPAREN

Previous tokens: Token('CONTROLWORD', '\\plain')


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./run.py", line 32, in main
    msg = extract_msg.Message(msg_file)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/extract_msg/message.py", line 26, in __init__
    super().__init__(path, prefix, attachmentClass, filename, delayAttachments, overrideEncoding, attachmentErrorBehavior, recipientSeparator)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/extract_msg/message_base.py", line 65, in __init__
    self.attachments
  File "/usr/local/anaconda3/lib/python3.8/site-packages/extract_msg/message_base.py", line 176, in attachments
    self._attachments.append(self.attachmentClass(self, attachmentDir))
  File "/usr/local/anaconda3/lib/python3.8/site-packages/extract_msg/attachment.py", line 46, in __init__
    self.__data = openMsg(self.msg.path, self.__prefix, self.__class__, overrideEncoding = msg.overrideEncoding, attachmentErrorBehavior = msg.attachmentErrorBehavior, strict = False)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/extract_msg/utils.py", line 607, in openMsg
    return Message(path, prefix, attachmentClass, filename, delayAttachments, overrideEncoding, attachmentErrorBehavior, recipientSeparator)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/extract_msg/message.py", line 26, in __init__
    super().__init__(path, prefix, attachmentClass, filename, delayAttachments, overrideEncoding, attachmentErrorBehavior, recipientSeparator)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/extract_msg/message_base.py", line 71, in __init__
    self.body
  File "/usr/local/anaconda3/lib/python3.8/site-packages/extract_msg/message_base.py", line 243, in body
    if self.deencapsulatedRtf and self.deencapsulatedRtf.content_type == 'text':
  File "/usr/local/anaconda3/lib/python3.8/site-packages/extract_msg/message_base.py", line 294, in deencapsulatedRtf
    self._deencapsultor.deencapsulate()
  File "/usr/local/anaconda3/lib/python3.8/site-packages/RTFDE/deencapsulate.py", line 130, in deencapsulate
    self.doc_tree = self._parse_rtf()
  File "/usr/local/anaconda3/lib/python3.8/site-packages/RTFDE/deencapsulate.py", line 164, in _parse_rtf
    self.full_tree = parser.parse(self.simplified_rtf)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/lark/lark.py", line 581, in parse
    return self.parser.parse(text, start=start, on_error=on_error)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/lark/parser_frontends.py", line 106, in parse
    return self.parser.parse(stream, chosen_start, **kw)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/lark/parsers/lalr_parser.py", line 41, in parse
    return self.parser.parse(lexer, start)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/lark/parsers/lalr_parser.py", line 171, in parse
    return self.parse_from_state(parser_state)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/lark/parsers/lalr_parser.py", line 188, in parse_from_state
    raise e
  File "/usr/local/anaconda3/lib/python3.8/site-packages/lark/parsers/lalr_parser.py", line 178, in parse_from_state
    for token in state.lexer.lex(state):
  File "/usr/local/anaconda3/lib/python3.8/site-packages/lark/lexer.py", line 489, in lex
    raise e  # Raise the original UnexpectedCharacters. The root lexer raises it with the wrong expected set.
  File "/usr/local/anaconda3/lib/python3.8/site-packages/lark/lexer.py", line 478, in lex
    yield lexer.next_token(lexer_state, parser_state)
  File "/usr/local/anaconda3/lib/python3.8/site-packages/lark/lexer.py", line 398, in next_token
    raise UnexpectedCharacters(lex_state.text, line_ctr.char_pos, line_ctr.line, line_ctr.column,
lark.exceptions.UnexpectedCharacters: No terminal matches '\' in the current parser context, at line 47 col 112

0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }
                                        ^
Expected one of:
	* OPENPAREN
	* TEXT
	* CONTROLSYMBOL
	* CONTROLWORD
	* RTFESCAPE
	* CLOSEPAREN

Previous tokens: Token('CONTROLWORD', '\\plain')

b'{\\rtf1\\ansi\\fbidis\\ansicpg1252\\deff0\\fromhtml1{\\fonttbl{\\f0\\fswiss\\fcharset0 Times New Roman;}{\\f1\\fswiss\\fcharset2 Symbol;}{\\f2\r\n\\fswiss\\fcharset0 Calibri;}{\\f3\\fswiss\\fcharset0 Verdana;}}\r\n{\\colortbl;\\red192\\green192\\blue192;\\red255\\green255\\blue255;\\red0\\green0\\blue1;\\red43\\green59\\blue70;\\red0\\green0\\blue255\r\n;\\red5\\green99\\blue193;\\red167\\green207\\blue56;\\red42\\green59\\blue69;\\red60\\green60\\blue59;}\r\n{\\*\\generator Microsoft Exchange Server;}\r\n{\\*\\formatConverter converted from html;}\r\n\\viewkind5\\viewscale100\r\n\\htmlrtf{\\*\\bkmkstart BM_BEGIN}\\htmlrtf0{\\*\\htmltag64}{\\*\\htmltag0 <html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta name="Generator" content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\\\\:* \\{behavior:url(#default#VML);\\}\\par\r\no\\\\:* \\{behavior:url(#default#VML);\\}\\par\r\nw\\\\:* \\{behavior:url(#default#VML);\\}\\par\r\n.shape \\{behavior:url(#default#VML);\\}\\par\r\n</style><![endif]--><style><!--\\par\r\n/* Font Definitions */\\par\r\n@font-face\\par\r\n\\\'09\\{font-family:"Cambria Math";\\par\r\n\\\'09panose-1:2 4 5 3 5 4 6 3 2 4;\\}\\par\r\n@font-face\\par\r\n\\\'09\\{font-family:Calibri;\\par\r\n\\\'09panose-1:2 15 5 2 2 2 4 3 2 4;\\}\\par\r\n@font-face\\par\r\n\\\'09\\{font-family:Verdana;\\par\r\n\\\'09panose-1:2 11 6 4 3 5 4 4 2 4;\\}\\par\r\n/* Style Definitions */\\par\r\np.MsoNormal, li.MsoNormal, div.MsoNormal\\par\r\n\\\'09\\{margin:0cm;\\par\r\n\\\'09font-size:11.0pt;\\par\r\n\\\'09font-family:"Calibri",sans-serif;\\par\r\n\\\'09mso-fareast-language:EN-US;\\}\\par\r\nspan.EmailStyle17\\par\r\n\\\'09\\{mso-style-type:personal-compose;\\par\r\n\\\'09font-family:"Calibri",sans-serif;\\par\r\n\\\'09color:windowtext;\\}\\par\r\n.MsoChpDefault\\par\r\n\\\'09\\{mso-style-type:export-only;\\par\r\n\\\'09font-family:"Calibri",sans-serif;\\par\r\n\\\'09mso-fareast-language:EN-US;\\}\\par\r\n@page WordSection1\\par\r\n\\\'09\\{size:612.0pt 792.0pt;\\par\r\n\\\'09margin:72.0pt 72.0pt 72.0pt 72.0pt;\\}\\par\r\ndiv.WordSection1\\par\r\n\\\'09\\{page:WordSection1;\\}\\par\r\n--></Style><!--[if gte mso 9]><xml>\\par\r\n<o:shapedefaults v:ext="edit" spidmax="1026" />\\par\r\n</xml><![endif]--><!--[if gte mso 9]><xml>\\par\r\n<o:shapelayout v:ext="edit">\\par\r\n<o:idmap v:ext="edit" data="1" />\\par\r\n</o:shapelayout></xml><![endif]--></Head><body lang="EN-GB" link="#0563C1" vlink="#954F72" style="word-wrap:break-word"><div class="WordSection1">}{\\*\\htmltag0 <p class="MsoNormal">}\\pard\r\n\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0 Hi {\\*\\htmltag0 <o:p></o:p></P>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal">}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0 We have a sstomer has staite or they may consider seeking refund (\\\'A30k) plus other additional costs they deem suitable.{\\*\\htmltag0 <o:p></o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal">}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0 We did respllow up latter. I have attached all 3 commuur reference.{\\*\\htmltag0 <br>}\\htmlrtf\r\n}{\\f2\\lang2057\\fs22\\line\r\n\\htmlrtf0{\\*\\htmltag0\\par}{\\*\\htmltag0 <br>}\\htmlrtf}{\\f2\\lang2057\\fs22\\line\r\n\\htmlrtf0{\\*\\htmltag0\\par}We have startedmost places.{\\*\\htmltag0 <o:p></o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal">}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0 A brier quality data.{\\*\\htmltag0 <o:p></o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal">}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0 We do not we know about the poeve the 1{\\*\\htmltag0 <sup>}\\htmlrtf\r\n}{\\f2\\lang2057\\super\\htmlrtf0 st{\\*\\htmltag0 </Sup>}\\htmlrtf}{\\f2\\lang2057\\fs22\\htmlrtf0  Marset for us.{\\*\\htmltag0 <o:p></o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal">}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0 I hoiew later today?{\\*\\htmltag0 <o:p></o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal">}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0 Thanks{\\*\\htmltag0 <o:p></o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal">}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0 {\\*\\htmltag0 <o:p></o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><span style="mso-fareast-language:EN-GB">}{\\*\\htmltag0 <o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\r\n\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </P>}\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" align="left" width="600" style="width:450.0pt;background:white;border-collapse:collapse"><tbody>}{\\*\\htmltag0 <tr><td valign="top" style="padding:0cm 0cm 0cm 0cm">}{\\*\\htmltag0 <table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0">}\\htmlrtf\r\n\\trowd\\irow0\\irowband0\\trcbpat2\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\htmlrtf0\r\n{\\*\\htmltag0 <tbody>}{\\*\\htmltag0 <tr style="height:15.6pt"><td style="padding:0cm 0cm 0cm 0cm;height:15.6pt">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <span style="font-size:9.0pt;color:#000001;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <img width="1" height="26" style="width:.0138in;height:.2708in" id="Picture_x0020_7" src="cid:image001.gif@01D82331.3F8C7950"></Span>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain{\\*\\htmltag0 }\\htmlrtf\\objattph  \\htmlrtf0{\\*\\htmltag0 <span style="font-size:9.0pt;color:#000001;mso-fareast-language:EN-GB"><o:p></o:p></Span></P>}\\htmlrtf\r\n\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly"><span style="font-size:9.0pt;color:#000001;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <o:p>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f2\\lang2057\\cf3\\fs18\\htmlrtf0\\~{\\*\\htmltag0 </o:p></Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </P>}\\htmlrtf\r\n\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly"><span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#000001;mso-fareast-language:EN-GB">}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f3\\lang2057\\cf3\\fs18\\htmlrtf0 Kind Regards{\\*\\htmltag0 </Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 <span style="font-size:10.0pt;font-family:"Verdana",sans-serif;color:#000001;mso-fareast-language:EN-GB"><o:p></o:p></Span></P>}\\htmlrtf\r\n\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly"><span style="font-size:10.0pt;color:#000001;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <o:p>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f2\\lang2057\\cf3\\fs20\\htmlrtf0\\~{\\*\\htmltag0 </o:p></Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </P>}{\\*\\htmltag0 </TD>}\\htmlrtf\r\n\\nestcell{\\nonesttables\\tab}\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\\itap2{\\*\\nesttableprops\\trowd\\irow0\\irowband0\\trcbpat2\r\n\\trrh312\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 <tr><td style="padding:0cm 0cm 0cm 0cm">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <b>}{\\*\\htmltag0 <span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#2B3B46;letter-spacing:-.15pt;mso-fareast-language:EN-GB">}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f3\\lang2057\\cf4\\fs18\\b\\htmlrtf0 C{\\*\\htmltag0 </Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </B><span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#000001;mso-fareast-language:EN-GB"><o:p></o:p></Span></P>}{\\*\\htmltag0 </TD>}\\htmlrtf\r\n\\nestcell{\\nonesttables\\tab}\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\\itap2{\\*\\nesttableprops\\trowd\\irow1\\irowband1\\trcbpat2\r\n\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 <tr><td style="padding:0cm 0cm 0cm 0cm">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#2B3B46;letter-spacing:-.15pt;mso-fareast-language:EN-GB">}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f3\\lang2057\\cf4\\fs18\\htmlrtf0 Viles &amp; Support {\\*\\htmltag0 </Span>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 <span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#000001;mso-fareast-language:EN-GB"><o:p></o:p></Span></P>}{\\*\\htmltag0 </TD>}\\htmlrtf\r\n\\nestcell{\\nonesttables\\tab}\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\\itap2{\\*\\nesttableprops\\trowd\\irow2\\irowband2\\trcbpat2\r\n\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 <tr style="height:6.0pt"><td style="padding:0cm 0cm 0cm 0cm;height:6.0pt">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#000001;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <img width="1" height="10" style="width:.0138in;height:.1041in" id="Picture_x0020_8" src="cid:image001.gif@01D82331.3F8C7950"><o:p></o:p></Span>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain{\\*\\htmltag0 }\\htmlrtf\\objattph  \\htmlrtf0{\\*\\htmltag0 </P>}{\\*\\htmltag0 </TD>}\\htmlrtf\\nestcell{\\nonesttables\\tab}\\htmlrtf0\r\n{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\\itap2{\\*\\nesttableprops\\trowd\\irow3\\irowband3\\trcbpat2\\trrh120\\clpadl0\\clpadfl3\\clpadr0\r\n\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 <tr><td style="padding:0cm 0cm 0cm 0cm">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#000001;mso-fareast-language:EN-GB">}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f3\\lang2057\\cf3\\fs18\\htmlrtf0 +44 (0)7788 365 955{\\*\\htmltag0 <o:p></o:p></Span>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 </P>}{\\*\\htmltag0 </TD>}\\htmlrtf\\nestcell{\\nonesttables\\tab}\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\r\n\\itap2{\\*\\nesttableprops\\trowd\\irow4\\irowband4\\trcbpat2\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\r\n\\clcbpat2\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 <tr><td style="padding:0cm 0cm 0cm 0cm">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <span style="font-size:9.0pt;font-family:"Verdana",sans-serif;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <a href="mailto:cemery@senceive.com"><span style="color:#0563C1">}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\field{\\*\\fldinst HYPERLINK "mailto:ceme@e.com" }{\\fldrslt{\\f3\\lang2057\\cf6\\fs18\r\n\\ul\\htmlrtf0 cemery@senceive.com{\\*\\htmltag0 </Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </A>}\\htmlrtf}}\\htmlrtf0{\\*\\htmltag0 <o:p></o:p></Span></P>}{\\*\\htmltag0 </TD>}\\htmlrtf\r\n\\nestcell{\\nonesttables\\tab}\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\\itap2{\\*\\nesttableprops\\trowd\\irow5\\irowband5\\trcbpat2\r\n\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 <tr><td style="padding:0cm 0cm 0cm 0cm">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#2B3B46;letter-spacing:-.15pt;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <a href="https://www.linkedin.com/" target="_blank"><b>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain{\\*\\htmltag0 <span style="color:#A7CF38">}\\htmlrtf{\\field{\\*\\fldinst HYPERLINK "https://www.linkedin.com/in//" }{\\fldrslt\r\n{\\f3\\lang2057\\cf7\\fs18\\b\\ul\\htmlrtf0 Connect\\~{\\*\\htmltag0 </Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </B></A>}\\htmlrtf}}{\\f3\\lang2057\r\n\\cf4\\fs18\\htmlrtf0 with me on LinkedIn{\\*\\htmltag0 </Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 <span style="font-size:9.0pt;font-family:"Verdana",sans-serif;color:#000001;mso-fareast-language:EN-GB"><o:p></o:p></Span></P>}{\\*\\htmltag0 </TD>}\\htmlrtf\r\n\\nestcell{\\nonesttables\\tab}\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\\itap2{\\*\\nesttableprops\\trowd\\irow6\\irowband6\\trcbpat2\r\n\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 <tr style="height:8.4pt"><td style="padding:0cm 0cm 0cm 0cm;height:8.4pt">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <span style="font-size:10.0pt;color:#000001;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <img border="0" width="1" height="14" style="width:.0138in;height:.1458in" id="Picture_x0020_3" src="cid:image001.gif@01D82331.3F8C7950"></Span>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain{\\*\\htmltag0 }\\htmlrtf\\objattph  \\htmlrtf0{\\*\\htmltag0 <span style="font-size:10.0pt;color:#000001;mso-fareast-language:EN-GB"><o:p></o:p></Span></P>}{\\*\\htmltag0 </TD>}\\htmlrtf\r\n\\nestcell{\\nonesttables\\tab}\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\\itap2{\\*\\nesttableprops\\trowd\\irow7\\irowband7\\trcbpat2\r\n\\trrh168\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 </Tbody></Table>}{\\*\\htmltag0 </TD>}\\htmlrtf\\pard\\intbl\\cbpat2\\cell\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\r\n\\intbl\\row\r\n\\htmlrtf0{\\*\\htmltag0 <tr><td valign="top" style="background:#2A3B45;padding:0cm 0cm 0cm 0cm">}{\\*\\htmltag0 <table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="600" style="width:450.0pt;background:#2A3B45">}\\htmlrtf\r\n\\trowd\\irow1\\irowband1\\trcbpat2\\clcbpat8\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\cellx8856\\htmlrtf0\r\n{\\*\\htmltag0 <tbody>}{\\*\\htmltag0 <tr><td style="padding:0cm 0cm 0cm 0cm">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <span style="color:white">}{\\*\\htmltag0 <a href="https://www.sss.com/" target="_blank"><span style="font-size:10.0pt;color:silver;mso-fareast-language:EN-GB;text-decoration:none">}\\pard\r\n\\intbl\\itap2\\cbpat8\\plain{\\*\\htmltag0 <img border="0" width="600" height="84" style="width:6.25in;height:.875in" id="Picture_x0020_4" src="cid:image002.jpg@01D82331.3F8C7950"></Span>}\\htmlrtf\r\n{\\field{\\*\\fldinst HYPERLINK "https://www.sss.com/" }{\\fldrslt\\htmlrtf0{\\*\\htmltag0 }\\htmlrtf\\objattph  \\htmlrtf0{\\*\\htmltag0 </A>}\\htmlrtf\r\n}}\\htmlrtf0{\\*\\htmltag0 </Span><span style="font-size:10.0pt;color:#000001;mso-fareast-language:EN-GB"><o:p></o:p></Span></P>}{\\*\\htmltag0 </TD>}\\htmlrtf\r\n\\nestcell{\\nonesttables\\tab}\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\\itap2{\\*\\nesttableprops\\trowd\\irow0\\irowband0\\trcbpat8\r\n\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat8\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 </Tbody></Table>}{\\*\\htmltag0 </TD>}\\htmlrtf\\pard\\intbl\\cbpat8\\cell\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\r\n\\intbl\\row\r\n\\htmlrtf0{\\*\\htmltag0 <tr><td valign="top" style="padding:0cm 0cm 0cm 0cm">}{\\*\\htmltag0 <table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0">}\\htmlrtf\r\n\\trowd\\irow2\\irowband2\\trcbpat2\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\htmlrtf0\r\n{\\*\\htmltag0 <tbody>}{\\*\\htmltag0 <tr style="height:12.0pt"><td style="padding:0cm 0cm 0cm 0cm;height:12.0pt">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <span style="font-size:10.0pt;color:#000001;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <img border="0" width="1" height="20" style="width:.0138in;height:.2083in" id="Picture_x0020_5" src="cid:image001.gif@01D82331.3F8C7950"></Span>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain{\\*\\htmltag0 }\\htmlrtf\\objattph  \\htmlrtf0{\\*\\htmltag0 <span style="font-size:10.0pt;color:#000001;mso-fareast-language:EN-GB"><o:p></o:p></Span></P>}{\\*\\htmltag0 </TD>}\\htmlrtf\r\n\\nestcell{\\nonesttables\\tab}\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\\itap2{\\*\\nesttableprops\\trowd\\irow0\\irowband0\\trcbpat2\r\n\\trrh240\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 <tr><td style="padding:0cm 0cm 0cm 0cm">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:#3C3C3B;mso-fareast-language:EN-GB">}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f3\\lang2057\\cf9\\fs15\\htmlrtf0 7b/7c Imperial Studios, Imperial Road, Fulham, London SW6 2AG{\\*\\htmltag0 <br>}\\htmlrtf\r\n}{\\f3\\lang2057\\cf9\\fs15\\line\r\n\\htmlrtf0{\\*\\htmltag0\\par}United Kingdom Company no. 05608752 (England) VAT no. GB 894344685{\\*\\htmltag0 <o:p></o:p></Span>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 </P>}\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly"><span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:#3C3C3B;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <o:p>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f3\\lang2057\\cf9\\fs15\\htmlrtf0\\~{\\*\\htmltag0 </o:p></Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </P>}\\htmlrtf\r\n\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly"><span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:#3C3C3B;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <o:p>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f3\\lang2057\\cf9\\fs15\\htmlrtf0\\~{\\*\\htmltag0 </o:p></Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </P>}\\htmlrtf\r\n\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly"><span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:#3C3C3B;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <o:p>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f3\\lang2057\\cf9\\fs15\\htmlrtf0\\~{\\*\\htmltag0 </o:p></Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </P>}\\htmlrtf\r\n\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly"><span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:#3C3C3B;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <o:p>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f3\\lang2057\\cf9\\fs15\\htmlrtf0\\~{\\*\\htmltag0 </o:p></Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </P>}\\htmlrtf\r\n\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly"><span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:#3C3C3B;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <o:p>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain\\htmlrtf{\\f3\\lang2057\\cf9\\fs15\\htmlrtf0\\~{\\*\\htmltag0 </o:p></Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </P>}{\\*\\htmltag0 </TD>}\\htmlrtf\r\n\\nestcell{\\nonesttables\\tab}\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\\itap2{\\*\\nesttableprops\\trowd\\irow1\\irowband1\\trcbpat2\r\n\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 <tr style="height:12.0pt"><td style="padding:0cm 0cm 0cm 0cm;height:12.0pt">}{\\*\\htmltag0 <p class="MsoNormal" style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">}{\\*\\htmltag0 <span style="font-size:10.0pt;color:#000001;mso-fareast-language:EN-GB">}{\\*\\htmltag0 <img border="0" width="1" height="20" style="width:.0138in;height:.2083in" id="Picture_x0020_6" src="cid:image001.gif@01D82331.3F8C7950"></Span>}\\pard\r\n\\intbl\\itap2\\cbpat2\\plain{\\*\\htmltag0 }\\htmlrtf\\objattph  \\htmlrtf0{\\*\\htmltag0 <span style="font-size:10.0pt;color:#000001;mso-fareast-language:EN-GB"><o:p></o:p></Span></P>}{\\*\\htmltag0 </TD>}\\htmlrtf\r\n\\nestcell{\\nonesttables\\tab}\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\\intbl\\itap2{\\*\\nesttableprops\\trowd\\irow2\\irowband2\\trcbpat2\r\n\\trrh240\\clpadl0\\clpadfl3\\clpadr0\\clpadfr3\\clpadb0\\clpadfb3\\clpadt0\\clpadft3\\clcbpat2\\cellx8856\\nestrow}{\\nonesttables\\par}\r\n\\htmlrtf0{\\*\\htmltag0 </Tbody></Table>}{\\*\\htmltag0 </TD>}\\htmlrtf\\pard\\intbl\\cbpat2\\cell\\htmlrtf0{\\*\\htmltag0 </TR>}\\htmlrtf\\pard\r\n\\intbl\\row\r\n\\htmlrtf0{\\*\\htmltag0 </Tbody></Table>}{\\*\\htmltag0 <p class="MsoNormal"><span style="mso-fareast-language:EN-GB">}{\\*\\htmltag0 <o:p>}\\pard\r\n\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></Span>}\\htmlrtf}\\htmlrtf0{\\*\\htmltag0 </P>}\\htmlrtf\\par\r\n\\htmlrtf0{\\*\\htmltag0 <p class="MsoNormal"><o:p>}\\pard\\plain\\htmlrtf{\\f2\\lang2057\\fs22\\htmlrtf0\\~{\\*\\htmltag0 </o:p></P>}\\htmlrtf\r\n}\\htmlrtf0{\\*\\htmltag0 }{\\*\\htmltag0 </Div>}{\\*\\htmltag0 </Body>}{\\*\\htmltag0 </Html>}}\r\n'

Here is the offending string from the simplified_rtf var in the deencapsulated method. Removed the sensitive information so the sentences don't make any sense, but there is text where there should be text.

\plain Hi Vinny{\*\htmltag0 <o:p></o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal">}\pard\plain We have a  with to fix the refund (\'A3300k) plus.{\*\htmltag0 <o:p></o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal">}\pard\plain We did res your reference.{\*\htmltag0 <br>}{\*\htmltag0\par}{\*\htmltag0 <br>}{\*\htmltag0\par}We have started drafting a reply which avenue. See the word docume and better structure in most places.{\*\htmltag0 <o:p></o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal">}\pard\plain A brief covid) and we suspect that there were. We installations. We where possible but we properly.{\*\htmltag0 <o:p></o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal">}\pard\plain We do not situation. From believe the 1{\*\htmltag0 <sup>} st{\*\htmltag0 </Sup>}  March for us.{\*\htmltag0 <o:p></o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal">}\pard\plain I hope the today?{\*\htmltag0 <o:p></o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal">}\pard\plain Thanks{\*\htmltag0 <o:p></o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal">}\pard\plain {\*\htmltag0 <o:p></o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal"><o:p>}\pard\plain\~{\*\htmltag0 </o:p></P>}{\*\htmltag0 }{\*\htmltag0 <p class="MsoNormal"><span style="mso-fareast-language:EN-GB">}{\*\htmltag0 <o:p>}\pard\plain\~{\*\htmltag0 </o:p></Span>}{\*\htmltag0 </P>}{\*\htmltag0 <table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" align="left" width="600" style="width:450.0pt;background:white;border-collapse:collapse"><tbody>}{\*\htmltag0 <tr><td valign="top" style="padding:0cm 0cm 0cm 0cm">}{\*\htmltag0 <table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0">}

So, I have a super hack :

 def _simplify_text_for_parsing(self):
        """Replaces control chars within the text with their RTF encoded versions \\'HH.
        """
        cleaned = self.stripped_rtf.replace('\\\\', "\\'5c")
        cleaned = cleaned.replace('\\{', "\\'7b")
        cleaned = cleaned.replace('\\}', "\\'7d")
        cleaned = cleaned.replace('\\~', "")
        return cleaned

So I did some investigating and it looks like the grammar isn't detecting the \~ control symbol properly, as it only seems to recognize ~ alone and not preceded by a single slash. The grammar sees a single slash before it and doesn't understand it, throwing the error.

Adding \\~ to the grammar causes it to be properly detected in the first place, although I'm not sure if this is properly handled (or even exactly how it should be handled).

It's supposed to create an &nbsp in the html output or a non-breaking space in utf-8.

Can confirm that appears to be the correct behavior for handling it. If &nbsp; appears in the encapsulated HTML and this is not removed when parsing the HTML due to the surrounding tags, then it should be directly replaced.

Hi @seamustuohy,
I encountered a similar error while running the deencapsulate() method on an RTF mail content.
It seems like you fixed this issue in this PR, I was wondering if the fix was already released or about to be released...
I would appreciate any help.

Code:

from RTFDE.deencapsulate import DeEncapsulator
rtf_obj = DeEncapsulator(rtf_body)
rtf_obj.deencapsulate()

Error:

self = <lark.lexer.TraditionalLexer object at 0x135349af0>
lex_state = <lark.lexer.LexerState object at 0x13529ffc0>
parser_state = <lark.parsers.lalr_parser.ParserState object at 0x13529e3c0>

    def next_token(self, lex_state, parser_state=None):
        line_ctr = lex_state.line_ctr
        while line_ctr.char_pos < len(lex_state.text):
            res = self.match(lex_state.text, line_ctr.char_pos)
            if not res:
                allowed = self.scanner.allowed_types - self.ignore_types
                if not allowed:
                    allowed = {"<END-OF-FILE>"}
>               raise UnexpectedCharacters(lex_state.text, line_ctr.char_pos, line_ctr.line, line_ctr.column,
                                           allowed=allowed, token_history=lex_state.last_token and [lex_state.last_token],
                                           state=parser_state, terminals_by_name=self.terminals_by_name)
E               lark.exceptions.UnexpectedCharacters: No terminal matches '\' in the current parser context, at line 10 col 1
E               
E               \~{\*\htmltag0 </Div>}{\*\htmltag0 }{\*\
E               ^
E               Expected one of: 
E               	* TEXT
E               	* CONTROLSYMBOL
E               	* CONTROLWORD
E               	* OPENPAREN
E               	* CLOSEPAREN
E               	* RTFESCAPE
E               
E               Previous tokens: Token('TEXT', '\r\n')

@ShacharKidor,

That milestone release is waiting on a much larger PR that I'm hoping to have done in the next few months. There are some larger structural issues around how the library is doing decoding which had to all be bundled together to be released. The larger fix will address those final issues and allow the release of the next milestone version.

Hi @seamustuohy,
Thanks for your response.
I would appreciate it if you could update here when the next milestone version is released.
Thanks again!

@moishce - FYI.

Addressed in the 0.1.0 version which is in the final notification and testing stage on dev @TheElementalOfDestruction, @ShacharKidor, & @moishce please test out this new version. I'll be waiting a couple of weeks before I do the full release so everyone has a chance to conduct testing and update their libraries as necessary.