MCPcopy Create free account
hub / github.com/MailCore/mailcore2

github.com/MailCore/mailcore2 @0.6.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.6.4 ↗ · + Follow
4,721 symbols 8,725 edges 850 files 773 documented · 16% updated 22d ago0.6.4 · 2020-08-01★ 2,694225 open issues

Browse by type

Functions 3,827 Types & classes 894
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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

Build for iOS/OSX

Read instructions for iOS/OSX.

Build for Android

Read instructions for Android.

Build for Windows

Read instructions for Windows.

Build for Linux

Read instructions for Linux.

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 fetchMessagesOperationWithFolder: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

License

MailCore 2 is BSD-Licensed.

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 2,851
Function 976
Class 841
Enum 45
Interface 8

Languages

C++79%
Java16%
C5%
TypeScript1%

Modules by API surface

src/core/imap/MCIMAPSession.cpp197 symbols
src/core/basetypes/MCString.cpp126 symbols
src/async/imap/MCIMAPAsyncSession.cpp91 symbols
src/java/com/libmailcore/IMAPSession.java80 symbols
src/core/abstract/MCMessageHeader.cpp73 symbols
src/core/nntp/MCNNTPSession.cpp63 symbols
src/async/imap/MCIMAPAsyncConnection.cpp57 symbols
src/core/smtp/MCSMTPSession.cpp56 symbols
src/core/rfc822/MCMessageBuilder.cpp56 symbols
src/core/imap/MCIMAPSearchExpression.cpp50 symbols
src/core/basetypes/icu-ucsdet/ustring.cpp50 symbols
src/java/native/com_libmailcore_IMAPSession.cpp49 symbols

For agents

$ claude mcp add mailcore2 \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page