2012-05-01 3 views
1

Я ищу какое-то направление для того, чтобы разобрать электронную почту, используя nokogiri. Ниже приведен пример электронного письма. Я просмотрел этот документ http://nokogiri.org/tutorials/parsing_an_html_xml_document.html и часы googleing. Я новичок в Ruby on Rails и ищу отличный пример или подробные инструкции. Спасибо за ваше время.parse email using nokogiri

MIME-Version: 1.0 
Received: by 10.76.129.52; Mon, 30 Apr 2012 22:11:24 -0700 (PDT) 
Date: Mon, 30 Apr 2012 22:11:24 -0700 
Message-ID: <[email protected]om> 
Subject: Customize Gmail with colors and themes 
From: Gmail Team <[email protected]> 
To: parse email <[email protected]> 
Content-Type: multipart/alternative; boundary=bcaec545501825242f04bef29a74 

--bcaec545501825242f04bef29a74 
Content-Type: text/plain; charset=ISO-8859-1 
Content-Transfer-Encoding: quoted-printable 

To spice up your inbox with colors and themes, check out the Themes tab 
under Settings. 
     Customize Gmail =BB <https://mail.google.com/mail/#settings/themes> 


Enjoy! 

- The Gmail Team 
[image: Themes thumbnails] 

Please note that Themes are not available if you're using Internet Explorer 
6.0. To take advantage of the latest Gmail features, please upgrade to a 
fully supported 
browser<http://support.google.com/mail/bin/answer.py?answer=3D6557&hl=3Den&= 
utm_source=3Dwel-eml&utm_medium=3Deml&utm_campaign=3Den> 
. 

--bcaec545501825242f04bef29a74 
Content-Type: text/html; charset=ISO-8859-1 

<html> 
<font face="Arial, Helvetica, sans-serif"> 
<p>To spice up your inbox with colors and themes, check out the Themes tab 
under Settings.</p> 

<table cellpadding="0" cellspacing="0"> 
    <col style="width: 1px;"/> 
    <col/> 
    <col style="width: 1px;"/> 
    <tr> 
    <td></td> 
    <td height="1px" style="background-color: #ddd"></td> 
    <td></td> 
    </tr> 
    <tr> 
    <td style="background-color: #ddd"></td> 
    <td background="https://mail.google.com/mail/images/welcome-button-background.png" 
     style="background-color: #ddd; background-repeat: repeat-x; 
      padding: 10px; font-size: larger"> 
      <a href="https://mail.google.com/mail/#settings/themes" 
      style="font-weight: bold; color: #000; text-decoration: none; 
      display: block;"> 
     Customize Gmail &#187;</a> 
    </td> 
    <td style="background-color: #ddd"></td> 
    </tr> 
<tr> 
    <td></td> 
    <td height="1px" style="background-color: #ddd"></td> 
    <td></td> 
    </tr> 
</table> 

<p>Enjoy!</p> 

<p>- The Gmail Team</p> 

<img width="398" height="256" src="https://mail.google.com/mail/images/gmail_themes_2.png" 
alt="Themes thumbnails" /> 

<p><font size="-2" color="#999">Please note that Themes are not available if 
you're using Internet Explorer 6.0. To take advantage of the latest Gmail 
features, please 
<a href="http://support.google.com/mail/bin/answer.py?answer=6557&hl=en&utm_source=wel-  
eml&utm_medium=eml&utm_campaign=en"><font color="#999"> 
upgrade to a fully supported browser</font></a>.</font></p> 

</font> 
</html> 

--bcaec545501825242f04bef29a74-- 

ответ

1

Nokogiri отлично подходит для разбора HTML, но то, что у вас есть, - это электронное письмо. Попробуйте использовать TMail, чтобы сначала получить раздел HTML из письма, затем вы можете использовать Nokogiri для его анализа. Экстраполируя из документов TMail, вы можете сделать что-то вроде:

email = TMail::Mail.load('my_email.eml') 
    html_doc = Nokogiri::HTML(email.body) 
+0

Есть ли другой способ, кроме использования TMail, получить раздел HTML? – user1367188

+0

Nokogiri не знает, как читать электронные письма, только содержимое в формате HTML/XML. Поскольку у писем есть заголовки, разделы типа контента и т. Д., Вы должны удалить все эти трещины, прежде чем разбирать их как HTML. Вы можете * теоретически попробовать какую-нибудь пользовательскую стратегию на основе регулярных выражений (eeks!), Чтобы найти строку 'Content-Type: text/html', но это непросто и сложно сделать. –

+0

Хорошо спасибо. Меня попросили выяснить это без Тэйлая. Звучит ненормально. – user1367188