Нужна помощь в чтении писем с "почтой" в рубине
Я делаю автоматизацию с помощью Watir, который создает письмо, которое мне нужно проверить. Я был отмечен в письме как о самом простом способе сделать это.
Я добавил следующий код и смог получить первое электронное письмо из своего почтового ящика.
require 'mail'
require 'openssl'
Mail.defaults do
retriever_method :pop3, :address => "email.someemail.com",
:port => 995,
:user_name => 'domain/username',
:password => 'pwd',
:enable_ssl => true
end
puts Mail.first
Я новичок в этом форуме и у меня есть следующие вопросы:
Как я могу получить все непрочитанные письма? Я старался
Mail.all
,Mail.first
,Mail.last
, но ничего не возвращает непрочитанное письмо.Как я могу получить все ссылки, которые присутствуют внутри электронных писем? Или почтовое тело от конкретного письма? Мне нужно получить тело письма первого непрочитанного письма.
Как я могу получать электронные письма из определенной папки, если у меня есть подпапки внутри папки "Входящие"?
3 ответа
В разделе 6.4.4 протокола IMAP указаны различные флаги поиска, которые вы можете использовать для поиска сообщений.
Вы можете получать только новые сообщения, передавая флаги поиска методу find следующим образом:
new_messages = Mail.find(keys: ['NOT','SEEN'])
На это сообщение также был дан ответ на вопрос о репозитории Mail GitHub.
Похоже, вы прочитали некоторые документы. Mail.all возвращает все электронные письма, включая прочитанные. Mail.first возвращает первое непрочитанное. Я хотел бы представить, что если вы сделаете это снова, то вернете следующую непрочитанную. Если ваша система контролируется, вам не нужно беспокоиться о таком количестве непрочитанных писем. Если бы я был вами, я бы попробовал это в IRB, пока вы не разберетесь с этим, возможно, даже создадите класс, который облегчит использование для вас. Удачи.
Обновление: документация из Почтового камня. Если Mail.first не возвращает непрочитанное письмо (все время), то об этом должен знать автор. Вы можете отправить вопрос. Я не использую этот драгоценный камень сам. Я использую гем Gmail для тестирования.
Mail.all #=> Returns an array of all emails
Mail.first #=> Returns the first unread email
Mail.last #=> Returns the first unread email
Как насчет экономии времени, когда вы читаете почту, а затем в следующий раз, когда вы читаете все письма, обрабатываете письма только позднее этой даты? Я знаю, что это обходной путь, но я считаю, что он не поддерживается с самоцветом почты. Mailman gem поддерживает это, но удаляет почту, как только вы ее обрабатываете.