Ruby, как правильно декодировать почту с помощью MIME multipart? - PullRequest
2 голосов
/ 20 января 2011

Я пытаюсь написать систему, которая могла бы получать почту из gmail и получать содержимое в Ruby. (используя imap или pop)
И, насколько я знаю, есть ' ruby-gmail ', 'mail' (более новая версия tmail) и 'action mailer', которые могут помочь мне сделать это.

Я сейчас пробую 'mail' и 'ruby-gmail', и я использую декодированную функцию следующим образом:

gmail.inbox.emails[0].body.decoded

Но некоторые письма могли быть правильно декодированы, а некоторые - нет.
Вывод декодированной почты выглядит так:

This is MIME multipart 6.
--__=_Part_Boundary_002_310696381.907173471
Content-Type: text/plain;
    charset="big5"
Content-Transfer-Encoding: quoted-printable

=AE=BC=A5=BF=A7A=A6n,
.......(some encoded content)

И для некоторых других писем Content-Transfer-Encoding - base64.

Есть ли лучший способ правильно декодировать почту?
Или мне просто нужно прочитать письмо, получить зашифрованную часть, и использовать Base64.decode64 или распаковать. ("M") для декодирования почты?

1 Ответ

7 голосов
/ 20 января 2011

Я не знаю о самоцвете «gmail», но «почта» работает довольно хорошо.Должно работать что-то вроде

require 'mail'
mail = Mail.new(mail_text)
mail.parts[0].body.decoded

(используйте «n» вместо 0 для других частей)

Также помните, что это может быть вложение, поэтому вам нужно mail.attachments[0].decoded

...