Почтовое содержание синтаксического анализа от заключенного в кавычки ответа

81
задан ctcherry 8 March 2014 в 22:52
поделиться

3 ответа

Я сделал намного больше поиска на этом и здесь - то, что я нашел. Существует в основном две ситуации, под которыми Вы делаете это: когда у Вас есть весь поток и когда Вы не делаете. Я разобью его в те две категории:

, Когда у Вас есть поток:

, Если у Вас есть весь ряд электронных писем, можно достигнуть очень высокого уровня обеспечения, которое, что Вы удаляете, на самом деле заключенный в кавычки текст. Существует два способа сделать это. Один, Вы могли использовать Идентификатор сообщения сообщения, В ответ на идентификатор и Список веток для определения отдельного сообщения, это - родитель и поток, которому это принадлежит. Для получения дополнительной информации об этом см. RFC822, RFC2822, эта интересная статья о поточной обработке , или эта статья о поточной обработке . Как только Вы повторно собрали поток, можно тогда удалить внешний текст (такой Относительно, От, CC, и т.д.... строки), и Вы сделаны.

, Если сообщения Вы работаете с, не имеют заголовков, можно также использовать соответствие подобия для определения, какие части электронного письма являются текстом ответа. В этом случае Вы застреваете с выполнением соответствия подобия для определения текста, который повторяется. В этом случае Вы могли бы хотеть изучить алгоритм расстояния Левенштейна такой как этот на Проекте или Кода этот .

, Неважно, что, если Вы интересуетесь процессом поточной обработки, выезд этот большой PDF на повторно собирающихся почтовых потоках .

, Когда у Вас нет потока:

, Если Вы застреваете только с одним сообщением от потока, Вы делаете, чтобы должными быть попытаться предположить, какова кавычка. В этом случае вот различные методы цитаты, которые я видел:

  1. строка (как замечено в перспективе).
  2. Угловые скобки
  3. "---Исходное сообщение---"
  4. "В такой-то и такой-то день, так-то и так-то записал":

Удаляют текст оттуда вниз, и Вы сделаны. Оборотная сторона к любому из них - то, что они все предполагают, что отправитель поместил их ответ сверху заключенного в кавычки текста и не чередовал его (как был старый стиль в Интернете). Если это происходит, удача. Я надеюсь, что это помогает некоторым из Вас там!

58
ответ дан Gautam 24 November 2019 в 09:39
поделиться

В первую очередь, это - хитрая задача.

необходимо собрать типичные ответы из различных почтовых клиентов и подготовить корректные регулярные выражения (или безотносительно) для парсинга их. Я собрал ответы из перспективы, тандерберда, Gmail, почты яблока и mail.ru.

я использую регулярные выражения для парсинга ответа следующим способом: если выражение не сделало подобранный, я пытаюсь использовать следующий.

new Regex("From:\\s*" + Regex.Escape(_mail), RegexOptions.IgnoreCase);
new Regex("<" + Regex.Escape(_mail) + ">", RegexOptions.IgnoreCase);
new Regex(Regex.Escape(_mail) + "\\s+wrote:", RegexOptions.IgnoreCase);
new Regex("\\n.*On.*(\\r\\n)?wrote:\\r\\n", RegexOptions.IgnoreCase | RegexOptions.Multiline);
new Regex("-+original\\s+message-+\\s*$", RegexOptions.IgnoreCase);
new Regex("from:\\s*$", RegexOptions.IgnoreCase);

Для удаления цитаты в конце:

new Regex("^>.*$", RegexOptions.IgnoreCase | RegexOptions.Multiline);

Вот моя небольшая коллекция тестовых ответов (образцы, разделенные на ---):

From: test@test.com [mailto:test@test.com] 
Sent: Tuesday, January 13, 2009 1:27 PM
----
2008/12/26 <test@test.com>

>  text
----
test@test.com wrote:
> text
----
      test@test.com wrote:         text
text
----
2009/1/13 <test@test.com>

>  text
----
 test@test.com wrote:         text
 text
----
2009/1/13 <test@test.com>

> text
> text
----
2009/1/13 <test@test.com>

> text
> text
----
test@test.com wrote:
> text
> text
<response here>
----
--- On Fri, 23/1/09, test@test.com <test@test.com> wrote:

> text
> text

С наилучшими пожеланиями, Oleg Yaroshevych

30
ответ дан Oleg Yaroshevych 24 November 2019 в 09:39
поделиться

Нет никакого универсального индикатора ответа в электронном письме. Лучшее, которое можно сделать, попытаться поймать наиболее распространенное и проанализировать новые шаблоны, поскольку Вы сталкиваетесь с ними.

Имеют в виду, что некоторые люди вставляют ответы в заключенном в кавычки тексте (Мой босс, например, отвечает на вопросы на той же строке, как я спросил их), так независимо от того, что Вы делаете, Вы могли бы потерять некоторую информацию, которую Вам понравится хранить.

6
ответ дан 3Doubloons 24 November 2019 в 09:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: