Mailcore 2: Introduction

  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', addMailCore.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', addlibMailCore.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:@"ADDRESS@gmail.com"];
    [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 startmethod. 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值