Нужна помощь в чтении писем с "почтой" в рубине

Я делаю автоматизацию с помощью 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 

Я новичок в этом форуме и у меня есть следующие вопросы:

  1. Как я могу получить все непрочитанные письма? Я старался Mail.all, Mail.first, Mail.last, но ничего не возвращает непрочитанное письмо.

  2. Как я могу получить все ссылки, которые присутствуют внутри электронных писем? Или почтовое тело от конкретного письма? Мне нужно получить тело письма первого непрочитанного письма.

  3. Как я могу получать электронные письма из определенной папки, если у меня есть подпапки внутри папки "Входящие"?

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 поддерживает это, но удаляет почту, как только вы ее обрабатываете.

Другие вопросы по тегам