Если вы можете связать ответное (RE :) сообщение с исходным / предыдущим сообщением, на которое оно является ответом, то я думаю, что вы могли бы получить основной текст исходного / предыдущего сообщения из вашей базы данных, а затем удалите этот текст из тела ответа. Однако этот метод не будет точным на 100%, поскольку клиенты могут преобразовывать электронные письма в формате HTML / Rich Text в обычный текст или наоборот. В любом таком случае этот метод, вероятно, не будет работать. Несмотря на это, этот метод будет общим и, вероятно, будет работать большую часть времени.
Кроме того, поставщик электронной почты может добавлять определенные поля заголовка или преамбулы к началу цитируемого сообщения в ответе. В этом случае я не думаю, что есть какое-либо решение «поймать все».
Я бы порекомендовал ориентироваться на нескольких действительно крупных провайдеров веб-почты (Gmail, Yahoo, Microsoft и т. Д.), Изучить форматы, которые они используют для своих ответов, и соответствующим образом проанализировать сообщения. Кроме того, вы также можете обрабатывать несколько общих форматов. Например, символ «>» обычно используется в начале каждой строки цитируемого текста в ответе.
Если вы собираетесь разрабатывать на языке, подобном C #, создайте себе интерфейс, подобный IReplyFormat
, с соответствующей реализацией для каждого провайдера и, возможно, некоторыми общими форматами.
Я не думаю, что вы найдете какое-либо идеальное решение этой проблемы, так как просто существует слишком много почтовых провайдеров со слишком большим количеством различных форматов. Тем не менее, я думаю, что вы можете, по крайней мере, найти некоторые методы, такие как упомянутые выше, которые будут работать для вас чаще, чем нет, и это лучшее, на что вы можете надеяться на данный момент.