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