资源说明:An adapter for DM that is 0.10/next compliant (and very unfinished)
IMAP Adapter for DataMapper =========================== There exist other implementations of an imap adapter but they are either not 0.10 compatible or I couldn't find a working version. Also, I am picky and want to do this right. Philosophy ========== A resource is a mailbox. So you will probably end up with a Gmail::Inbox and a Gmail::Trash. To move an item to the trash you would resource.move_to(Gmail::Trash) [not implemented yet]. Various Types are provided to make it easier to work with the different things like From and To and CC and all of that. These also help with the queries [not implemented yet]. Specs ===== I use bacon. It's the best testing library that exists. gem install bacon bacon spec/dm-imap-adapter_spec.rb or use autotest (although I'm not sure I got that setup perfectly). The specs currently assume you have a test account with test as the password on localhost which has an INBOX. All emails in this inbox will be deleted, just like a test database. How to use ========== gem install gemcutter # unless you already have gem tumble # unless you already have gem install dm-imap-adapter Check the specs! Also, do this for your model: class Inbox include DataMapper::Resource include DataMapper::Types::Imap def self.default_repository_name :test_inbox end property :uid, UID, :key => true # do we need :key here since UID is a serial? property :message_id, MessageId property :subject, Subject property :sender, Sender property :from, From property :to, To property :body, BodyText property :raw_body, Body property :date, InternalDate property :envelope_date, EnvelopeDate property :size, Size property :sequence, Sequence end How can I help? =============== Glad you asked! There are lots of things that don't work yet, mostly because I don't need them to (all I need is #all and #destroy). Here are the big things that don't work yet: * #update * #create should use update to set any attributes that can't be set during the initial append to the mailbox * Flags - a Type needs to be created that manages an array of symbols. Maybe base it off the Enum? * Searching should actually use the uid_search method and not rely on the in memory query filter. If you got 1000 emails in your inbox your currently screwed. * Figuring out why I had to hack net/imap so much to support dovecot on my machine. Seems strange that I had to open the class like that. * Extend other net/imap structs like the Address one. * Better specs!
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。