2010-10-27 4 views
12

मैं रूबी मेल मणि का उपयोग करके एक ईमेल पढ़ने की कोशिश कर रहा हूं। लेकिन 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--

कैसे मैं इस ईमेल शरीर मेल केवल असली शरीर पाठ निकालने संदेश साफ कर सकते हैं, किसी भी बिना हेडर?

मैं रूबी पर रूबी में आधारित एक साधारण टिकट प्रणाली बना रहा हूं, और टिकट @mydomain.com द्वारा ईमेल प्राप्त होने पर टिकट बनाया जाता है। लेकिन जब संदेश एचटीएमएल प्रारूप में है, तो बॉडी टेक्स्ट हेडर टेक्स्ट से घिरा हुआ है।

उत्तर

8

आप ठीक तरह से प्रारूपित ईमेल है, तो आप मेल सहायक तरीकों का उपयोग कर सकते हैं:

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

यह हमेशा नहीं होता है यदि आपके पास उदाहरण है तो काम करें एकल भाग संदेश (केवल पाठ) या इंटरनेट से ईमेल प्राप्त करें क्योंकि आप वहां से प्रत्येक ग्राहक से फ़ॉर्मेटिंग पर भरोसा नहीं कर सकते हैं। मेरा विश्वास करो, मैंने कड़ी मेहनत सीखी है।

8

, लगता है कि आपने एक बहुखण्डीय ईमेल मिल गया है तो आप उपयोग कर सकते हैं mail.parts [0] .body.decoded ये शायद काम में भी आ जाएगा: mail.multipart?
mail.parts.length

github पर मणि प्रलेखन सुंदर सभ्य

+0

यही वास्तव में क्या मैं खोज रहा था! आपका बहुत बहुत धन्यवाद। – newx

0

मेल मणि जोड़ें और mail.parts [1] .body.decoded के साथ ईमेल बॉडी प्रारूप का उपयोग करें।

0

mail मणि के साथ, आप कर सकते हैं:

text = mail.multipart? ? mail.text_part.decoded : mail.body.decoded` 
संबंधित मुद्दे