2011-01-20 2 views
2

Gmail에서 메일을 가져 와서 Ruby에서 콘텐츠를 가져올 수있는 시스템을 작성하려고합니다. (imap 또는 pop 사용)
그리고 내가 아는 한 'ruby-gmail', 'mail'(최신 버전의 tmail) 및 '조치 메일러'가 있습니다.Ruby, MIME 멀티 파트로 메일을 올바르게 디코딩하는 방법은 무엇입니까?

지금은 '메일'과 '루비의 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) 

을 그리고 다른 메일로, 콘텐츠 전송 인코딩은 base64로는 다음과 같습니다 디코딩 된 메일의
출력은 다음과 같습니다.

메일을 올바르게 디코딩하는 더 좋은 방법이 있습니까?
또는 메일을 읽고 인코딩 된 부분 인 을 가져 와서 Base64.decode64를 사용하거나 메일을 디코딩해야합니다 ("M")?

답변

7

나는 'gmail'보석에 대해 잘 모르지만 'mail'은 꽤 잘 작동한다.

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

같은 뭔가 작업 ('n'을 대신 다른 부분에 대한 0의 사용)해야

또한

당신이 당신의 도움을 mail.attachments[0].decoded

+0

감사해야 할 것입니다, 그래서이 첨부 될 수 있다고 인식 ! 출력이 이상하게 보이는 이유를 발견했습니다! 원래 우편물이 영어가 아닌 중국어로되어 있기 때문입니다. 내가 필요한 것은 ascii와 유니 코드 디코더이지만 MIME 디코더는 아니다. 당신의 도움을 주셔서 감사합니다! – lintingy

+0

multipart 메시지에서'mail.body.decode'을 시도하지 마십시오. 작동하지 않습니다. 멀티 파트로 테스트하기 전에? –

관련 문제