NAME

Email::Archive::Storage::MongoDB - write emails to MongoDB

SYNOPSIS

Email::Archive::Storage::MongoDB is a storage engine for Email::Archive to store emails in a MongoDB database.

Construction and connecting to the database is slightly different from the default. The other methods should work like documented in Email::Archive.

my $storage = Email::Archive::Storage::MongoDB->new(
    host       => $hostname,        # defaults to localhost
    port       => $port,            # defaults to 27017
    database   => $db_name,
    collection => $collection_name,
);

my $mongo_archive = Email::Archive->new(
    storage => $storage,
);

Or my $mongo_archive = Email::Archive->new( storage => Email::Archive::Storage::MongoDB->new; );

The alternate construction needs a connection string passed to connect.

ATTRIBUTES

host

The database host to connect to. Default is localhost.

port

The port on the database host to connect to. Defaults to MongoDBs default port 27017.

database

A valid MongoDB database name. If the database does not exist it will be created.

collection

A MongoDB collection name. If the collection does not exist it will be created automatically.

METHODS

connect

If the storage was constructed passing all the needed arguments just connect.

$mongo_archive->connect;

Alternative connection needs to have a connection string of the format host:port:database:collection and will override previously configured values.

$mongo_archive->connect("$host:$port:$dbname:$collname");

store

$email_archive->store($msg);

Where $msg could be anything feedable to Email::Abstract. That is a raw email, an Email::MIME object or even an Email::Abstract object.

The message will be stored in the messages table of the connected database.

$email_archive->search($attributes);

Search the database for emails where $attributes is a hashref containing the fields to search and the values filter.

$attributes = { from_addr => $addr };

Will return the first found result as Email::MIME object.

$email_archive->search({ message_id => $some_id });

Is exactly the same as retrieval by Message-ID.

retrieve

$email_archive->retrieve($msg_id);

Retrieve emails by Message-ID. Is a shortcut for

$email_archive->search({ message_id => $some_id });

LICENSE

This library may be used under the same terms as Perl itself.

AUTHOR AND COPYRIGHT

Copyright (c) 2010, 2011 Chris Nehren apeiron@cpan.org.