Схожу с ума, пытаясь сделать эту работу этим утром.
Я использую граничную строку электронного письма, чтобы попытаться разделить ее на части text/plain и text/html. Я знаю, что для этого есть библиотеки, но ни одна из них не работает в WinRT.
Вот что у меня есть. Я сосу регулярное выражение, так что, вероятно, все неправильно:
Пример данных
From: Rory <[email protected]>
Date: Mon, 8 Oct 2012 17:05:48 +0100
Message-ID: <[email protected]>
Subject: Subject of my email
To: [email protected]
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);
Это соответствует обеим частям, только если я пропущу граничную строку в конце. Если я включу его, он будет соответствовать только первой части. Может кто-нибудь, пожалуйста, помогите мне, прежде чем я начну крушить вещи
ОБНОВЛЕНИЕ: добавлены образцы данных, сокращены