Мне нужно узнать подробности из письма, которое мне отправлено. Мне нужно поместить каждое значение в переменную и сохранить его в базе данных или сохранить его в хеш-файле перед сохранением в базе данных.
Я использую самоцвет Mail для получения электронной почты с помощью POP3, а Nokogiri - для анализа электронной почты. Данные, которые мне нужно получить, находятся внутри тега <span>
. Однако мне также нужно получить текст перед тегом <span>
, который будет служить ключом для текста внутри тега. Например, Name: <span> My Name </span>
.
Ожидаемый результат должен быть таким, если он сохранен в хэше:
hash = ['Tour Name:' : 'Day Tour', 'Tour Date:' : '2019-06-07']
или, по крайней мере, я могу собрать ключ и значения вместе.
Вот мой код:
require 'net/imap'
require 'nokogiri'
class SomeClass
def self.get_email
Mail.defaults do
retriever_method :pop3, :address => "pop.gmail.com",
:port => 995,
:user_name => username,
:password => password,
:enable_ssl => true
end
email = Mail.first.html_part.to_s
doc = Nokogiri::HTML::Document.parse(email)
puts doc.css('span').map(&:text) <- gets text of span only
end
end
Необработанный HTML-код электронного письма:
<tr>
<td>
Tour Name: <span style="font-weight:bold">Day Tour</span>
</td>
</tr>
<tr>
<td>
Tour Date: <span style="font-weight:bold">June 07, 2019</span>
</td>
</tr>