Подтвердить что ты не робот

Mail gem - как очистить строку тела

Я пытаюсь прочитать письмо с использованием рубиновой почты. Но 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--

Как я могу очистить это почтовое сообщение по электронной почте, извлекая только текст REAL BODY TEXT, без ЛЮБОГО заголовка?

Я создаю простую систему билетов, базируемую в Ruby on Rails, и билет создается, когда электронное письмо получено по адресу [email protected] Но когда сообщение находится в формате HTML, ТЕКСТ BODY окружен текстом HEADER.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

text = mail.multipart? ? mail.text_part.decoded : mail.body.decoded`