今朝、これを機能させようとして、ばかげたことに夢中になっています。
メールの境界文字列を使用して、テキスト/プレーンとテキスト/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 自体 (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);
これは、最後の境界文字列を省略した場合にのみ、両方の部分に一致します。含めると、最初の部分のみに一致します。壊し始める前に誰か助けてくれませんか
更新: サンプルデータを追加、削減