Swiftpack.co - MailCore/mailcore2 as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
MailCore/mailcore2
MailCore 2 provide a simple and asynchronous API to work with e-mail protocols IMAP, POP and SMTP. The API has been redesigned from ground up.
.package(url: "https://github.com/MailCore/mailcore2.git", from: "0.6.4")

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.

GitHub

link
Stars: 2339
Last commit: 1 week ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Submit a free job ad (while I'm testing this). The analytics numbers for this website are here.

Release Notes

0.6.4
1 year ago

Added

  • Support for moveMessagesOperation to java library in Pull Request (#1749)
  • Add uidplus, acl, enable capabilities parsing in Pull Request (#1750)
  • Fix Operation Progress Listener on Android in Pull Request (#1787)
  • Fix superclass for MCONNTPDisconnectOperation in Pull Request (#1852)
  • Add type annotation to MCOIMAPFetchFoldersOperation (#1784)

Updated

  • Exclude driverkit SDK from macosx sdk version variable. in Pull Request (#1855)
  • Add Hostinger to email providers in Pull Request #1883
  • Update pod spec to resolve the unencrypted HTTP protocol warning
  • Eliminate -Wimplicit-fallthrough trigger (#1767)
  • Remove deprecated ALWAYS_SEARCH_USER_PATHS setting for iOS target (#1757)
  • Drop flags -lcrypto -lssl in target OS X

Fixed

  • Fixed memory leak
  • Enable MCOIMAPFolderStatus to be constructed by the NSObject default constructor.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics