Существует несколько различных вариантов кодирования тела сообщения, таких как quoted-printable, base-64 и т. Д. В Ruby проще всего передать сообщение целиком в почтовый гем, дать ему выполнить синтаксический анализ и затем вывести текстовое содержимое.
message = Mail.new(raw_source)
puts message.body.decoded
По опыту вы можете обнаружить, что вам нужно сделать что-то вроде следующего:
message.multipart? ? (message.text_part ? message.text_part.body.decoded : nil) : message.body.decoded
Мы используем нечто похожее на это, когда отправляем сообщение в приложение в CloudMailin, чтобы убедиться, что мы находим простую часть, поскольку не всегда гарантируется, что простая часть будет в теле, а не закодирована в mime. *