今天早上试图让这项工作变得疯狂。
我正在使用电子邮件的边界字符串尝试将其拆分为 text/plain 和 text/html 部分。我知道有一些库可以做到这一点,但它们都不能在 WinRT 中工作。
这就是我所拥有的。我很讨厌正则表达式,所以它可能是各种错误的:
样本数据
From: Rory <me@gmail.ftw>
Date: Mon, 8 Oct 2012 17:05:48 +0100
Message-ID: <a1b2c3d4e5f6g7h8i9j10a1b2c3d4e5f6g7h8i9j10@mail.gmail.ftw>
Subject: Subject of my email
To: me@gmail.ftw
Content-Type: multipart/alternative; boundary=bcaec54fbd3a824f3504cb8e677d
--bcaec54fbd3a824f3504cb8e677d
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
text part of email
--bcaec54fbd3a824f3504cb8e677d
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
<html>
<strong>HTML part of email</strong>
</html>
--bcaec54fbd3a824f3504cb8e677d--
我正在尝试提取
- --bcaec54fbd3a824f3504cb8e677d 边界标记之间的两个部分
- 每个部分的 Content-Type、charset 和 Content-Transfer-Encoding
- 内容本身(在 Content-Transfer-Encoding 之下,直到下一个边界
正则表达式代码
string b = "bcaec54fbd3a824f3504cb8e677d";
Regex r = new Regex(
"(--" + b + "\r?\nContent-Type: (text/plain|text/html); charset=(.+?)\r?\nContent-Transfer-Encoding: (.+?)\r?\n(.*?--" + b + "))",
RegexOptions.Singleline);
仅当我在末尾省略边界字符串时,这才匹配这两个部分。如果我包含它,它只匹配第一部分。在我开始砸东西之前,有人可以帮我吗
更新: 添加样本数据,减少