将带有嵌套块引号的电子邮件 HTML 转换为电子邮件的纯文本 (pandoc)?

Convert email HTML with nested blockquotes to plain text for e-mail (pandoc)?

我有这个问题,比如说,我用纯文本写电子邮件;其他人在 HTML 中回复 - 他们的客户将电子邮件引号字符转换为 <blockquote> 标签;然后我想再次使用纯文本回复。但是,我的网络邮件客户端只会将第一层 <blockquote> 嵌套解释为引号字符,从而丢失所有引号嵌套层。

所以,一开始我以为我可以用 Thunderbird 作弊:以 HTML 格式开始一个新的电子邮件 ("Write"),然后你在 compose/"Write:" 电子邮件 window,选择 Insert/HTML 并粘贴原始电子邮件 HTML(我的网络邮件客户端有一个选项允许原始 HTML HTML 要复制的电子邮件,太棒了),将其保存为草稿电子邮件。然后回复此电子邮件草稿 - 我的 Thunderbird 设置为始终以纯文本回复;但是,同样在这里,只有第一个 <blockquote> 层被转换回引号字符,因此 quoting/threading 嵌套层消失了。

所以,我想 - 也许我可以使用 pandoc 来进行此转换?事实上,它确实有效 - 这是一个示例 HTML 电子邮件,我将其保存为 text.html:

<p>&nbsp;</p>
<div id="_rc_sig">&nbsp;</div>
<p>&nbsp;</p>
<p id="reply-intro">john@example.com skrev den 17.06.2020 22:30:</p>
<blockquote>
<div id="replybody1">
<div>
<div style="color: #000000; font-family: arial, helvetica, sans-serif; font-size: 12pt;">
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc at blandit velit.</div>
<div>&nbsp;</div>
<hr id="v1zwchr" />
<div><strong>From: </strong>john@example.com<br /><strong>To: </strong>"Jack Jackson" &lt;jack@example.com&gt;<br /><strong>Cc: </strong>"Bob Bobson" &lt;bob@example.com&gt;, "Fred Fredson" &lt;fred@example.com&gt;, "Jim Jimson" &lt;jim@example.com&gt;<br /><strong>Sent: </strong>Wednesday, 17 June, 2020 22:24:47<br /><strong>Subject: </strong>Re: My Email Subject 01</div>
<div>&nbsp;</div>
<div>
<div style="color: #000000; font-family: 'arial' , 'helvetica' , sans-serif; font-size: 12pt;">
<div>Hi there,</div>
<br />
<div>In hac habitasse platea dictumst. Sed nec purus leo. In est metus, tempor quis dapibus id, mollis ut est.</div>
<br />
<div>Morbi eu mauris sodales, sagittis nisl at, euismod quam. Proin mauris tortor, viverra eu erat eget, ultrices ornare justo. Donec lacinia nisi sit amet dolor semper posuere.</div>
<br />
<div>Pellentesque mattis, nisl quis scelerisque blandit, enim ipsum vestibulum diam, eu feugiat metus diam vel nisi. Etiam porttitor nisl ut ultrices feugiat.</div>
<br />
<div>Maecenas et neque at ante bibendum tempus vel a est. Sed vehicula urna augue, quis rutrum sapien congue et. Nullam ac elit quis metus ullamcorper placerat sed quis nunc:<br />1: Aliquam vestibulum lobortis dui, in mattis ipsum euismod sed.<br />2: Phasellus et fringilla tortor.<br />3: Donec diam nunc, aliquet a ultrices nec, interdum at dolor. <br />Fusce euismod finibus mi, sed viverra orci pulvinar non. Suspendisse in magna ut nunc finibus tempor eget et tortor.</div>
<br />
<div>Nullam sollicitudin sem id nibh placerat pellentesque. Ut fermentum pharetra venenatis. Maecenas vehicula, mauris a tincidunt vulputate, ante turpis finibus diam, a interdum ex sapien vel lorem. Nunc faucibus est eu eleifend venenatis. Mauris sed egestas nisi. Fusce suscipit tortor ac ultrices scelerisque. In hac habitasse platea dictumst.</div>
<br />
<div>Mauris tempor egestas nibh, a congue sapien tristique at. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla quam felis, tincidunt eget pretium ut, tempus vel tellus</div>
<br /><br />
<div>Etiam tincidunt risus sapien, eget tristique dolor dignissim a. Maecenas mi quam, auctor sit amet hendrerit id, finibus in ligula.</div>
<br />
<div>Cheers John</div>
<br /><hr id="v1zwchr" />
<div><strong>From: </strong>john@example.com<br /><strong>To: </strong>"Jack Jackson" &lt;jack@example.com&gt;<br /><strong>Cc: </strong>"Bob Bobson" &lt;bob@example.com&gt;, "Fred Fredson" &lt;fred@example.com&gt;, "Jim Jimson" &lt;jim@example.com&gt;<br /><strong>Sent: </strong>Wednesday, 17 June, 2020 21:41:05<br /><strong>Subject: </strong>Re: My Email Subject 01</div>
<br />
<div>
<div style="color: #000000; font-family: 'arial' , 'helvetica' , sans-serif; font-size: 12pt;">
<div>Phasellus non dolor pharetra turpis viverra varius non vitae lectus. Quisque egestas, diam quis viverra fringilla, ex urna consequat tortor, vel aliquet arcu purus sit amet nisi.</div>
<br /><hr id="v1zwchr" />
<div><strong>From: </strong>"Jack Jackson" &lt;jack@example.com&gt;<br /><strong>To: </strong>john@example.com, "Bob Bobson" &lt;bob@example.com&gt;<br /><strong>Cc: </strong>"Fred Fredson" &lt;fred@example.com&gt;, "Jim Jimson" &lt;jim@example.com&gt;<br /><strong>Sent: </strong>Wednesday, 17 June, 2020 21:34:53<br /><strong>Subject: </strong>Re: My Email Subject 01</div>
<br />
<div>
<p><span>Hi there</span></p>
<p><span>Suspendisse non nunc feugiat sapien pellentesque eleifend.<br />Quisque ipsum elit, volutpat eu mollis ac, hendrerit id ante..<br />Proin in nisi mi. Sed in lobortis risus. Donec sit amet ullamcorper mi.<br /></span></p>
<p><span>Jack<br /></span></p>
<p>&nbsp;</p>
<div class="v1moz-cite-prefix">Den 17-06-2020 kl. 21:28 skrev <a href="mailto:john@example.com" rel="noreferrer">john@example.com</a>:</div>
<blockquote>
<pre class="v1moz-quote-pre">Hi there,

Nulla eget diam nunc. Pellentesque in metus ligula.

Donec finibus erat id pharetra faucibus. Maecenas enim dui, semper eleifend nulla molestie, vulputate vulputate est.

Nam sit amet elit non dolor rhoncus pulvinar eget eu metus. Vestibulum hendrerit pretium nunc. Nullam diam massa, dictum a velit non, eleifend maximus nulla.

Vivamus vel congue nunc. In eget justo a lectus pulvinar facilisis.



----- Original Message -----
From: "Bob Bobson" <a href="mailto:bob@example.com" rel="noreferrer">&lt;bob@example.com&gt;</a>
To: <a href="mailto:john@example.com" rel="noreferrer">john@example.com</a>
Cc: "Jack Jackson" <a href="mailto:jack@example.com" rel="noreferrer">&lt;jack@example.com&gt;</a>, "Fred Fredson" <a href="mailto:fred@example.com" rel="noreferrer">&lt;fred@example.com&gt;</a>, "Jim Jimson" <a href="mailto:jim@example.com" rel="noreferrer">&lt;jim@example.com&gt;</a>
Sent: Wednesday, 17 June, 2020 16:40:54
Subject: Re: My Email Subject 01

Hi there,

Duis lacinia arcu sit amet aliquet sagittis. Integer tempor tortor eu ornare mattis. Morbi condimentum
auctor sodales. Maecenas ultrices leo at massa commodo sagittis.

Etiam justo est, mollis sed pellentesque quis, convallis nec ipsum. Nunc eget
nisl lacinia, ultricies magna ac, rutrum dui. Vestibulum vulputate ut lorem eu bibendum.


Vestibulum fermentum turpis est, a pulvinar tortor sollicitudin in. Fusce
tempor felis vel sem posuere, ac sodales justo suscipit. Nullam a orci ut ex
condimentum porta eget et eros. Maecenas congue erat ut nulla tempor pharetra.
Nullam velit quam, venenatis eget neque eget, porttitor consectetur
neque. Sed sed neque magna.

&aelig;nean ornare, diam eget porttitor vestibulum, enim nibh tempus enim,
a tempor nisl neque id velit.

</pre>
<blockquote>
<pre class="v1moz-quote-pre">Praesent eget vehicula urna, at vulputate elit. Aenean a ornare justo.
Vivamus
eu nunc consectetur, mattis ex nec, commodo metus.
denne v&aelig;rdi,
Donec consectetur et lectus vel elementum. Pellentesque eget pretium
enim.
</pre>
</blockquote>
<pre class="v1moz-quote-pre">Ah - Etiam tempor ultrices nisl, quis malesuada sem blandit vel.
Vivamus dignissim felis quis ante volutpat condimentum.?


Proin at sapien vitae enim pretium imperdiet non vitae metus.

Cheers,
Bob








</pre>
<blockquote>
<pre class="v1moz-quote-pre">Hi there,

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse neque augue,
viverra eu pharetra nec, volutpat id sapien. Vestibulum facilisis ligula nisl,
in dictum velit tristique in. Pellentesque sagittis et justo quis pretium. Lorem
ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse potenti.
Pellentesque cursus accumsan urna, eu ultricies ipsum tincidunt sed.

Cheers John
-------------------------

From: "Jack Jackson" <a href="mailto:jack@example.com" rel="noreferrer">&lt;jack@example.com&gt;</a>
To: "John Johnson" <a href="mailto:john@example.com" rel="noreferrer">&lt;john@example.com&gt;</a>
Cc: "Bob Bobson" <a href="mailto:bob@example.com" rel="noreferrer">&lt;bob@example.com&gt;</a>
Sent: Wednesday, 17 June, 2020 13:40:56
Subject: Re: My Email Subject 01

Hello there

Sed consectetur arcu ut facilisis interdum.

Nunc ante libero, faucibus vel ultricies sit amet, gravida nec
leo. Donec euismod risus ac leo efficitur, blandit pretium turpis feugiat.
Nam placerat, lectus quis consectetur malesuada, turpis ante aliquam velit,
in fermentum dolor ligula at eros.

Cheers Jack

Den 17-06-2020 kl. 13:31 skrev <a href="mailto:john@example.com" rel="noreferrer">john@example.com</a>:

</pre>
<blockquote>
<pre class="v1moz-quote-pre">Hi there,

Nunc eget metus eu ex maximus vehicula. Donec pretium ex vel felis condimentum,
eget pretium ante pulvinar. Pellentesque sed eros vitae ante lobortis venenatis
ut in nulla. Praesent a facilisis metus, et dignissim elit. Duis quis dui risus.

Donec et nunc at urna accumsan molestie. Praesent ultricies molestie metus at
venenatis. Curabitur mattis dolor laoreet, porttitor odio id, porttitor nisl.
Suspendisse finibus est ac sem lacinia dignissim. Donec vel pellentesque magna.
Pellentesque a volutpat ante. Vivamus urna mi, aliquet in tortor eget,
malesuada blandit turpis.

Best Regards

John
</pre>
</blockquote>
</blockquote>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>

我从 pandoc 得到的最好的方法是使用这个命令行:

pandoc -f html -t markdown-raw_html-native_divs-native_spans-fenced_divs-bracketed_spans-smart-escaped_line_breaks test.html -o test.txt

... 在这种情况下,我得到以下输出:

 

 

 

john\@example.com skrev den 17.06.2020 22:30:

> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc at
> blandit velit.
>
>  
>
> ------------------------------------------------------------------------
>
> **From:** john\@example.com
> **To:** "Jack Jackson" \<jack\@example.com\>
> **Cc:** "Bob Bobson" \<bob\@example.com\>, "Fred Fredson"
> \<fred\@example.com\>, "Jim Jimson" \<jim\@example.com\>
> **Sent:** Wednesday, 17 June, 2020 22:24:47
> **Subject:** Re: My Email Subject 01
>
>  
>
> Hi there,
>
>
>
> In hac habitasse platea dictumst. Sed nec purus leo. In est metus,
> tempor quis dapibus id, mollis ut est.
>
>
>
> Morbi eu mauris sodales, sagittis nisl at, euismod quam. Proin mauris
> tortor, viverra eu erat eget, ultrices ornare justo. Donec lacinia
> nisi sit amet dolor semper posuere.
>
>
>
> Pellentesque mattis, nisl quis scelerisque blandit, enim ipsum
> vestibulum diam, eu feugiat metus diam vel nisi. Etiam porttitor nisl
> ut ultrices feugiat.
>
>
>
> Maecenas et neque at ante bibendum tempus vel a est. Sed vehicula urna
> augue, quis rutrum sapien congue et. Nullam ac elit quis metus
> ullamcorper placerat sed quis nunc:
> 1: Aliquam vestibulum lobortis dui, in mattis ipsum euismod sed.
> 2: Phasellus et fringilla tortor.
> 3: Donec diam nunc, aliquet a ultrices nec, interdum at dolor.
> Fusce euismod finibus mi, sed viverra orci pulvinar non. Suspendisse
> in magna ut nunc finibus tempor eget et tortor.
>
>
>
> Nullam sollicitudin sem id nibh placerat pellentesque. Ut fermentum
> pharetra venenatis. Maecenas vehicula, mauris a tincidunt vulputate,
> ante turpis finibus diam, a interdum ex sapien vel lorem. Nunc
> faucibus est eu eleifend venenatis. Mauris sed egestas nisi. Fusce
> suscipit tortor ac ultrices scelerisque. In hac habitasse platea
> dictumst.
>
>
>
> Mauris tempor egestas nibh, a congue sapien tristique at. Lorem ipsum
> dolor sit amet, consectetur adipiscing elit. Nulla quam felis,
> tincidunt eget pretium ut, tempus vel tellus
>
>
>
>
> Etiam tincidunt risus sapien, eget tristique dolor dignissim a.
> Maecenas mi quam, auctor sit amet hendrerit id, finibus in ligula.
>
>
>
> Cheers John
>
>
>
> ------------------------------------------------------------------------
>
> **From:** john\@example.com
> **To:** "Jack Jackson" \<jack\@example.com\>
> **Cc:** "Bob Bobson" \<bob\@example.com\>, "Fred Fredson"
> \<fred\@example.com\>, "Jim Jimson" \<jim\@example.com\>
> **Sent:** Wednesday, 17 June, 2020 21:41:05
> **Subject:** Re: My Email Subject 01
>
>
>
> Phasellus non dolor pharetra turpis viverra varius non vitae lectus.
> Quisque egestas, diam quis viverra fringilla, ex urna consequat
> tortor, vel aliquet arcu purus sit amet nisi.
>
>
>
> ------------------------------------------------------------------------
>
> **From:** "Jack Jackson" \<jack\@example.com\>
> **To:** john\@example.com, "Bob Bobson" \<bob\@example.com\>
> **Cc:** "Fred Fredson" \<fred\@example.com\>, "Jim Jimson"
> \<jim\@example.com\>
> **Sent:** Wednesday, 17 June, 2020 21:34:53
> **Subject:** Re: My Email Subject 01
>
>
>
> Hi there
>
> Suspendisse non nunc feugiat sapien pellentesque eleifend.
> Quisque ipsum elit, volutpat eu mollis ac, hendrerit id ante..
> Proin in nisi mi. Sed in lobortis risus. Donec sit amet ullamcorper
> mi.
>
> Jack
>
>  
>
> Den 17-06-2020 kl. 21:28 skrev <john@example.com>:
>
> > ``` {.v1moz-quote-pre}
> > Hi there,
> >
> > Nulla eget diam nunc. Pellentesque in metus ligula.
> >
> > Donec finibus erat id pharetra faucibus. Maecenas enim dui, semper eleifend nulla molestie, vulputate vulputate est.
> >
> > Nam sit amet elit non dolor rhoncus pulvinar eget eu metus. Vestibulum hendrerit pretium nunc. Nullam diam massa, dictum a velit non, eleifend maximus nulla.
> >
> > Vivamus vel congue nunc. In eget justo a lectus pulvinar facilisis.
> >
> >
> >
> > ----- Original Message -----
> > From: "Bob Bobson" <bob@example.com>
> > To: john@example.com
> > Cc: "Jack Jackson" <jack@example.com>, "Fred Fredson" <fred@example.com>, "Jim Jimson" <jim@example.com>
> > Sent: Wednesday, 17 June, 2020 16:40:54
> > Subject: Re: My Email Subject 01
> >
> > Hi there,
> >
> > Duis lacinia arcu sit amet aliquet sagittis. Integer tempor tortor eu ornare mattis. Morbi condimentum
> > auctor sodales. Maecenas ultrices leo at massa commodo sagittis.
> >
> > Etiam justo est, mollis sed pellentesque quis, convallis nec ipsum. Nunc eget
> > nisl lacinia, ultricies magna ac, rutrum dui. Vestibulum vulputate ut lorem eu bibendum.
> >
> >
> > Vestibulum fermentum turpis est, a pulvinar tortor sollicitudin in. Fusce
> > tempor felis vel sem posuere, ac sodales justo suscipit. Nullam a orci ut ex
> > condimentum porta eget et eros. Maecenas congue erat ut nulla tempor pharetra.
> > Nullam velit quam, venenatis eget neque eget, porttitor consectetur
> > neque. Sed sed neque magna.
> >
> > ænean ornare, diam eget porttitor vestibulum, enim nibh tempus enim,
> > a tempor nisl neque id velit.
> > ```
> >
> > > ``` {.v1moz-quote-pre}
> > > Praesent eget vehicula urna, at vulputate elit. Aenean a ornare justo.
> > > Vivamus
> > > eu nunc consectetur, mattis ex nec, commodo metus.
> > > denne værdi,
> > > Donec consectetur et lectus vel elementum. Pellentesque eget pretium
> > > enim.
> > > ```
> >
> > ``` {.v1moz-quote-pre}
> > Ah - Etiam tempor ultrices nisl, quis malesuada sem blandit vel.
> > Vivamus dignissim felis quis ante volutpat condimentum.?
> >
> >
> > Proin at sapien vitae enim pretium imperdiet non vitae metus.
> >
> > Cheers,
> > Bob
> >
> >
> >
> >
> >
> >
> >
> > ```
> >
> > > ``` {.v1moz-quote-pre}
> > > Hi there,
> > >
> > > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse neque augue,
> > > viverra eu pharetra nec, volutpat id sapien. Vestibulum facilisis ligula nisl,
> > > in dictum velit tristique in. Pellentesque sagittis et justo quis pretium. Lorem
> > > ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse potenti.
> > > Pellentesque cursus accumsan urna, eu ultricies ipsum tincidunt sed.
> > >
> > > Cheers John
> > > -------------------------
> > >
> > > From: "Jack Jackson" <jack@example.com>
> > > To: "John Johnson" <john@example.com>
> > > Cc: "Bob Bobson" <bob@example.com>
> > > Sent: Wednesday, 17 June, 2020 13:40:56
> > > Subject: Re: My Email Subject 01
> > >
> > > Hello there
> > >
> > > Sed consectetur arcu ut facilisis interdum.
> > >
> > > Nunc ante libero, faucibus vel ultricies sit amet, gravida nec
> > > leo. Donec euismod risus ac leo efficitur, blandit pretium turpis feugiat.
> > > Nam placerat, lectus quis consectetur malesuada, turpis ante aliquam velit,
> > > in fermentum dolor ligula at eros.
> > >
> > > Cheers Jack
> > >
> > > Den 17-06-2020 kl. 13:31 skrev john@example.com:
> > > ```
> > >
> > > > ``` {.v1moz-quote-pre}
> > > > Hi there,
> > > >
> > > > Nunc eget metus eu ex maximus vehicula. Donec pretium ex vel felis condimentum,
> > > > eget pretium ante pulvinar. Pellentesque sed eros vitae ante lobortis venenatis
> > > > ut in nulla. Praesent a facilisis metus, et dignissim elit. Duis quis dui risus.
> > > >
> > > > Donec et nunc at urna accumsan molestie. Praesent ultricies molestie metus at
> > > > venenatis. Curabitur mattis dolor laoreet, porttitor odio id, porttitor nisl.
> > > > Suspendisse finibus est ac sem lacinia dignissim. Donec vel pellentesque magna.
> > > > Pellentesque a volutpat ante. Vivamus urna mi, aliquet in tortor eget,
> > > > malesuada blandit turpis.
> > > >
> > > > Best Regards
> > > >
> > > > John
> > > > ```

...太棒了,因为嵌套的块引号最终在纯文本输出中保留为引号字符...

但是,我不喜欢保留格式,例如 ``` {.v1moz-quote-pre}**From:**,或者像 "Jack Jackson" \<jack\@example.com\>.

这样的转义符

所以我可以使用一些 pandoc 设置,从电子邮件中获取类似电子邮件的纯文本格式 HTML - 没有特定于 Markdown 的格式或尖括号的反斜杠转义或在 @ 字符处,但即使在 <blockquote> 中也保留引号嵌套字符,如上例所示?

否则,是否有其他软件(甚至在线 app/webpage)可以将电子邮件 HTML 转换为电子邮件纯文本,从而保留嵌套引号?

您可以使用 Lua filter 并删除所有不想保留的文档组件。例如,删除大多数内联标记:

function Inline (inln)
  if inln.content then
    return inln.content
  else
    return inln
  end
end

通过将所有单词声明为预格式化的 Markdown 应该可以避免不必要的转义:

function Str (s)
  return pandoc.RawInline('markdown', s.text)
end