Code Monkey home page Code Monkey logo

mailcore2's Introduction

Mailcore 2: Introduction

MailCore 2 provides a simple and asynchronous Objective-C API to work with the e-mail protocols IMAP, POP and SMTP. The API has been redesigned from the ground up. It features:

  • POP, IMAP and SMTP support
  • RFC822 parser and generator
  • Asynchronous APIs
  • HTML rendering of messages
  • iOS and Mac support

Build Status

Installation

  1. If you're migrating from MailCore1, you should first clean your build folder.
  2. Checkout MailCore2 into a directory relative to your project.
  3. Under the build-mac directory, locate the mailcore2.xcodeproj file, and drag this into your Xcode project.
  4. For Mac - If you're building for Mac, you can either link against MailCore 2 as a framework, or as a static library:
    • Mac framework
      • Go to Build Phases from your build target, and under 'Link Binary With Libraries', add MailCore.framework and Security.framework.
      • Make sure to use LLVM C++ standard library. Open Build Settings, scroll down to 'C++ Standard Library', and select libc++.
      • In Build Phases, add a Target Dependency of mailcore osx (it's the one with a little toolbox icon).
      • Goto Editor > Add Build Phase > Copy Files.
      • Expand the newly created Build Phase and change it's destination to "Frameworks".
      • Click the + icon and select MailCore.framework.
    • Mac static library
      • Go to Build Phases from your build target, and under 'Link Binary With Libraries', add libMailCore.a and Security.framework.
      • Set 'Other Linker Flags' under Build Settings: -lctemplate -letpan -licudata -licui18n -licuuc -lxml2 -lsasl2 -liconv -ltidy -lz -lc++ -stdlib=libc++ -ObjC
      • Make sure to use LLVM C++ standard library. In Build Settings, locate 'C++ Standard Library', and select libc++.
      • In Build Phases, add a Target Dependency of static mailcore2 osx.
  5. For iOS - If you're targeting iOS, you have to link against MailCore 2 as a static library:
    • Add libMailCore-ios.a
    • Add CFNetwork.framework
    • Add Security.framework
    • Set 'Other Linker Flags': -lctemplate-ios -letpan-ios -licudata -licui18n -licuuc -lxml2 -lsasl2 -liconv -ltidy -lz -lstdc++ -stdlib=libstdc++ -ObjC
    • Make sure to use GNU C++ standard library. In Build Settings, locate 'C++ Standard Library', and select libstdc++.
    • In Build Phases, add a Target Dependency of static mailcore2 ios.
  6. Profit.

Here's a video that shows all the steps for iOS: http://www.youtube.com/watch?v=9fAo6oBzlQI

Basic IMAP Usage

Using MailCore 2 is just a little more complex conceptually than the original MailCore. All fetch requests in MailCore 2 are made asynchronously through a queue. What does this mean? Well, let's take a look at a simple example:

    MCOIMAPSession *session = [[MCOIMAPSession alloc] init];
    [session setHostname:@"imap.gmail.com"];
    [session setPort:993];
    [session setUsername:@"[email protected]"];
    [session setPassword:@"123456"];
    [session setConnectionType:MCOConnectionTypeTLS];

    MCOIMAPMessagesRequestKind requestKind = MCOIMAPMessagesRequestKindHeaders;
    NSString *folder = @"INBOX";
    MCOIndexSet *uids = [MCOIndexSet indexSetWithRange:MCORangeMake(1, UINT64_MAX)];

    MCOIMAPFetchMessagesOperation *fetchOperation = [session fetchMessagesByUIDOperationWithFolder:folder requestKind:requestKind uids:uids];

    [fetchOperation start:^(NSError * error, NSArray * fetchedMessages, MCOIndexSet * vanishedMessages) {
        //We've finished downloading the messages!

        //Let's check if there was an error:
        if(error) {
            NSLog(@"Error downloading message headers:%@", error);
        }

        //And, let's print out the messages...
        NSLog(@"The post man delivereth:%@", fetchedMessages);
    }];

In this sample, we retrieved and printed a list of email headers from an IMAP server. In order to execute the fetch, we request an asynchronous operation object from the MCOIMAPSession instance with our parameters (more on this later). This operation object is able to initiate a connection to Gmail when we call the start method. Now here's where things get a little tricky. We call the start function with an Objective-C block, which is executed on the main thread when the fetch operation completes. The actual fetching from IMAP is done on a background thread, leaving your UI and other processing free to use the main thread.

Documentation

mailcore2's People

Contributors

bismark avatar codafi avatar dglancy avatar dinhvh avatar fferino avatar hfiguiere avatar junjie avatar jwilling avatar mronge avatar ocrickard avatar paulyoung avatar pushkarsingh avatar silenteh avatar soxjke avatar tiennou avatar tokyovigilante avatar yellowandy avatar yuklai avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.