Как удалить определенную почту на сервере почтой ruby ​​/ mikel? - PullRequest
2 голосов
/ 08 января 2012

Я хочу использовать драгоценный камень Ruby / Mikel Mail для доступа к pop3, но я застрял, пытаясь найти способ ИЗБЕЖАТЬ удаление писем с сервера.Вот некоторый пример кода, который не работает, и показывает, как я неправильно понимаю предоставленные спецификации rdoc.

require 'rubygems'
require 'mail'

Mail.defaults do
  retriever_method :pop3, { :address => '...',                        
                     :user_name  => '...',
                     :password   => '...' }                        
end


puts "#{Mail.all.length} messages on server found."
if Mail.all.length > 0 
  mm = Mail.first
  puts mm.from
  puts "I delete all but the first mail!"

  mm.mark_for_delete = false
  Mail.find_and_delete

  puts "#{Mail.all.length} messages on server found."  
end

В результате при наличии двух писем на сервере этот скрипт просто удаляет оба.Вместо этого я хочу удалить только первое.

1 Ответ

5 голосов
/ 17 января 2012

Нашел сам, отвечу за вас, если вы смотрите на ту же проблему ..

Оказывается, вам нужно бросить блок в find_and_delete (), чтобы явно решить пропустить удалениесообщений, просто:

Mail.find_and_delete({:what=>:first}) { |msg| 
     msg.skip_deletion if msg.subject == "test1826"
}
...