2010-10-27 27 views
12

ruby ​​mail gem kullanarak bir e-posta okumaya çalışıyorum. Ancak mail.body.decoded, yalnızca gövde mesajını değil. Nasıl bu vücut mesajı temizlemek ve benzeri istenmeyen metni kaldırabilirsiniz:Mail gem - vücut dizgisini temizlemek için nasıl

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

message = $stdin.read 
mail = Mail.read_from_string(message) 
puts mail.body.decoded 
Ben HERHANGİ olmadan, sadece GERÇEK VÜCUT METİN ayıklanması bu e-posta vücut posta iletisi temizlemek nasıl

--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--

başlık

Ruby on Rails tabanlı basit bir Bilet Sistemi oluşturuyorum ve bir e-posta [email protected] tarafından alındığında bir bilet oluşturulur. Ancak mesaj HTML formatında olduğunda, BODY TEXT, HEADERs metni ile çevrelenir. mail.multipart: Bir çok parçalı e-posta var gibi mail.parts [0] muhtemelen çok kullanışlı olacaktır Bunlar .body.decoded kullanabilmesi

cevap

8

, Posta yardımcı yöntemlerini kullanabilirsiniz oldukça iyi: Bu her zaman değil

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

Eğer örneğin varsa tek parça mesajlar (sadece metin) veya internet üzerinden e-posta aldığınız için, oradaki her istemciden biçimlendirmeye güvenemezsiniz. İnan bana, zor yoldan öğrendim.

8

görünüyor?
mail.parts.length

github de mücevher dokümantasyon düzgün şekilde biçimlendirilmiş bir e-posta varsa

+0

Thats arıyordu tam olarak ne! Çok teşekkür ederim. – newx

0

Posta gemisini ekleyin ve mail.parts [1] .body.decoded ile e-posta gövdesi biçimi kullanın. mail taş ile

0

, yapabileceğiniz:

text = mail.multipart? ? mail.text_part.decoded : mail.body.decoded` 
İlgili konular