Почтовый камень - как очистить строку тела - PullRequest
13 голосов
/ 27 октября 2010

Я пытаюсь прочитать письмо, используя рубиновую почту. Но mail.body.decoded возвращает мне не только текст сообщения. Как я могу очистить это тело сообщения и удалить нежелательный текст, как:

-20cf30433c9a437cc304939017ef\nContent-Type: text/plain; charset=ISO-8859-1\nContent-

message = $stdin.read
mail = Mail.read_from_string(message)
puts mail.body.decoded

--20cf30433c9a437cc304939017ef\nContent-Type: text/plain; charset=ISO-8859-1\nContent-Transfer-Encoding: quoted-printable\n\n REAL BODY TEXT \\n\n--20cf30433c9a437cc304939017ef\nContent-Type: text/html; charset=ISO-8859-1\nContent-Transfer-Encoding: quoted-printable\n\n<br clear=3D\"all\">--20cf30433c9a437cc304939017ef--

Как мне очистить это почтовое сообщение, извлекающее только РЕАЛЬНЫЙ ТЕКСТ ТЕЛА, без ЛЮБОГО заголовка?

Я создаю простую систему тикетов, основанную на Ruby on Rails, и тикет создается при получении электронного письма по адресу ticket@mydomain.com Но когда сообщение находится в формате HTML, ТЕКСТ ТЕЛА окружен текстом HEADER.

Ответы [ 4 ]

9 голосов
/ 15 апреля 2011

Если у вас правильно отформатированный адрес электронной почты, вы можете использовать вспомогательные методы Mail:

mail = Mail.new(email_string)
mail.text_part # finds the first text/plain part
mail.html_part # finds the first text/html part

Это не всегда работает, если у вас есть, например, отдельные части сообщения (только текст) или получение электронной почты из Интернета в целом, поскольку вы не можете полагаться на форматирование от каждого клиента. Поверьте мне, я выучил трудный путь.

8 голосов
/ 30 октября 2010

похоже, что вы получили многочастную электронную почту, поэтому вы можете использовать mail.parts [0] .body.decoded Они, вероятно, тоже пригодятся: mail.multipart?
mail.parts.length

Документация по гемам на github довольно приличная

1 голос
/ 22 июня 2016

С драгоценным камнем mail вы можете сделать:

text = mail.multipart? ? mail.text_part.decoded : mail.body.decoded`
0 голосов
/ 05 января 2015

Добавьте почтовый гем и просто используйте формат тела письма с mail.parts [1] .body.decoded.

...