NAME

Email::Folder::Exchange - Access your Microsoft Exchange 2000/2003/2007/2010 email from perl

SYNOPSIS

  use Email::Folder::Exchange;

        # Access Exchange 2000/2003 via WebDAV
  my $folder = Email::Folder::Exchange->new('http://owa.myorg.com/user/Inbox', 'user', 'password');

        # Access Exchange 2007/2010 via Exchange Web Services
  my $folder = Email::Folder::Exchange->new('http://owa.myorg.com', 'user', 'password');

  for my $message ($folder->messages) {
    print "subject: " . $subject->header('Subject');
  }

  for my $folder ($folder->folders) {
    print "folder uri: " . $folder->uri->as_string;
    print " contains " . scalar($folder->messages) . " messages";
    print " contains " . scalar($folder->folders) . " folders";
  }

DESCRIPTION

Add access to Microsoft Exchange to Email::Folder. Contains API enhancements to allow folder browsing.

Email::Folder::Exchange is a wrapper around two modules [included]:

Email::Folder::Exchange::WebDAV - Access Exchange 2000/2003 via WebDAV
Email::Folder::Exchange::EWS - Access Exchange 2007/2010 via EWS

Each module has its own extensions to the Email:Folder protocol.

First, the module tries to connect via EWS. If the server reports a 404 error, the module attempts to fallback to WebDAV.

new($url, [$username, $password])

Create Email::Folder::Exchange object and login to OWA site.

url

URL of the target folder.

username

Username to authenticate as. Generally in the form of 'domain\username'. Overrides URL-supplied username if given.

password

Password to authenticate with. Overrides URL-supplied password.

messages()

Return a list containing all of the messages in the folder. Can only be called once as it drains the iterator.

next_message()

Return next message as Email::Simple object from folder. Acts as iterator. Returns undef at end of folder contents.

folders()

Return a list of Email::Folder::Exchange objects contained within base folder. Can only be called once as it drains the iterator.

next_folder()

Return next folder under base folder as Email::Folder::Exchange object. Acts as iterator. Returns undef at end of list.

uri()

Return URI locator object for current folder.

CAVEATS

  Can't locate object method "new" via package "LWP::Protocol::https::Socket"

Install the Crypt::SSLeay module in order to support SSL URLs

 The server cannot service this request right now. Try again later.

This error indicates the mailbox is has too many messages or the specified message is too large to retrieve via web services.

SEE ALSO

Email::Folder, URI, Email::Simple, Crypt::SSLeay

AUTHOR

Warren Smith <lt>wsmith@cpan.org<gt>

COPYRIGHT AND LICENSE

Copyright (C) 2011 by Warren Smith

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.