MailCore 2 provide a simple and asynchronous API to work with e-mail protocols IMAP, POP and SMTP.

Related tags

Email mailcore2
Overview

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:@"[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 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.

Comments
  • MailCore2 ios: Unable to parse response from server.

    MailCore2 ios: Unable to parse response from server.

    Hello

    i am getting error : "Unable to parse response from server."

    But when i remove following file: scripts/prebuilt.lists

    it is working fine.

    Everytime i have to remove this file and buil again?

    Please do help.

    opened by Pankaj03 66
  • New message rendering methods on IMAP

    New message rendering methods on IMAP

    I'm creating a pull request so it's easier to discuss and track changes as opposed to in the issues themselves.

    As discussed in #112 and #111, this is a first pass at defining the interface. Currently only includes IMAP. RFC 822 to come.

    I need to look further into the implementation and how the existing IMAPMessage::htmlRendering and HTMLRenderer::htmlForIMAPMessage methods work. It's unclear to me at this point if these new methods need to take additional parameters for the callbacks or if callbacks will be created within their implementation.

    work-in-progress waffle:in progress 
    opened by paulyoung 48
  • Issue with versions of iOS and Xcode protected by NDA

    Issue with versions of iOS and Xcode protected by NDA

    I'm hesitant to discuss here due to the NDA.

    I'm happy to use Apple forums or whatever is preferred but the issue is easily reproducible for me by following the standard steps.

    duplicate 
    opened by paulyoung 44
  • Android Example Not Working

    Android Example Not Working

    Hi,

    1. I have followed the instructions to build the AndroidExample App. Build successful. I tried to do run Android Example with .aar file in libs folder. I have changed MessageSyncManger with username,password,host and port number.
        session.setUsername("[email protected]");
        session.setPassword("mypassword");
        session.setHostname("imap.gmail.com");
        session.setPort(993);
        session.setConnectionType(ConnectionType.ConnectionTypeTLS);
    

    I am getting following error and app crashes. /com.libmailcore.androidexample A/libc﹕ Fatal signal 11 (SIGSEGV), code 2, fault addr 0x766e6f6f in tid 13683 (.androidexample)

    How can i fix this issue.

    1. The minimum sdk for the AndroidExample App and .aar Libary Project is set to 21.

    if i change the minimum sdk in the app/build.grade file to 14 then

    Error:Execution failed for task ':app:processDebugManifest'.

    Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version 21 declared in library C:\Users\pratap\Desktop\mailcore2-master\example\android\AndroidExample\app\build\intermediates\exploded-aar\mailcore2-android-1\AndroidManifest.xml Suggestion: use tools:overrideLibrary="com.libmailcore.library" to force usage

    is MailCore2 does not support lower than Lollypop devices ?

    1. I Found LoginActivity in the AndroidManifest.xml file but i did not found Activity java file.

    Thanks, Pratap.

    opened by kprathap23 35
  • Not able to login Outlook

    Not able to login Outlook

    If i try to login Outlook , it ends up with the below error.

    Error Domain=MCOErrorDomain Code=1 "A stable connection to the server could not be established." UserInfo={NSLocalizedDescription=A stable connection to the server could not be established.}

    I am using below code,

    session = [[MCOIMAPSession alloc]init];
    session.hostname = @"mail.outlook.com";
    session.username = userName;
    session.password = pwd;
    session.port = 993;
    session.authType = MCOAuthTypeSASLPlain;
    session.connectionType = MCOConnectionTypeTLS;
    

    Any help would be appreciated..

    opened by vymallesh 34
  • Unable To Send Messages From Outlook Account

    Unable To Send Messages From Outlook Account

    Although I am successfully able to fetch folders and messages for my Outlook email accounts, I discovered that I am unable to send messages.

    When I first encountered the problem, I went into the terminal and tried to connect to the server by doing:

    openssl s_client -starttls smtp -crlf -connect smtp-mail.outlook.com:587

    This was successful. My smtp session settings matched the above request:

    self.smtpSession = [[MCOSMTPSession alloc] init]; self.smtpSession.hostname = smtp-mail.outlook.com; self.smtpSession.port = 587; self.smtpSession.username = [email protected]; self.smtpSession.connectionType = MCOConnectionTypeStartTLS; self.smtpSession.password = nil; self.smtpSession.OAuth2Token = (same token as is working for imap session); self.smtpSession.authType MCOAuthTypeXOAuth2; self.smtpSession.checkCertificateEnabled = NO;

    The first error I received was:

    2014-03-12 16:49:01.107 MailApp[9748:60b] sendOutboxEmail error:Unable to authenticate with the current session's credentials.

    Next, I tried changing the smtpSession.connectionType to MCOConnectionTypeTLS. This change yielded a different error:

    2014-03-12 16:44:01.049 MailApp[9531:99cf] CFNetwork SSLHandshake failed (-9800) 2014-03-12 16:44:03.610 MailApp[9531:60b] sendOutboxEmail error:A stable connection to the server could not be established.

    My smtp session connection logger for the first attempt using the startTLS connection printed:

    MCOSMTPSession: [-1] 2014-03-12 16:48:20.363 MailApp[9748:3f1b] MCOSMTPSession: [0] 220 BLU0-SMTP305.phx.gbl Microsoft ESMTP MAIL Service, Version: 6.0.3790.4675 ready at Wed, 12 Mar 2014 13:48:20 -0700

    2014-03-12 16:48:20.364 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.364 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.364 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.365 MailApp[9748:3f1b] MCOSMTPSession: [1] EHLO droga5-180.home

    2014-03-12 16:48:20.365 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.365 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.431 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.431 MailApp[9748:3f1b] MCOSMTPSession: [0] 250-BLU0-SMTP305.phx.gbl Hello [108.41.27.139]

    250-TURN

    250-SIZE 41943040

    250-ETRN

    250-PIPELINING

    250-DSN

    250-ENHANCEDSTATUSCODES

    250-8bitmime

    250-BINARYMIME

    250-CHUNKING

    250-VRFY

    250-TLS

    250-STARTTLS

    250 OK

    2014-03-12 16:48:20.432 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.432 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.432 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.433 MailApp[9748:3f1b] MCOSMTPSession: [1] STARTTLS

    2014-03-12 16:48:20.433 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.433 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.703 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.704 MailApp[9748:3f1b] MCOSMTPSession: [0] 220 2.0.0 SMTP server ready

    2014-03-12 16:48:20.704 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.704 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.908 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.908 MailApp[9748:3f1b] MCOSMTPSession: [1] EHLO user-180.home

    2014-03-12 16:48:20.909 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.909 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.944 BirdseyeMail[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.944 MailApp[9748:3f1b] MCOSMTPSession: [0] 250-BLU0-SMTP305.phx.gbl Hello [108.41.27.139]

    250-TURN

    250-SIZE 41943040

    250-ETRN

    250-PIPELINING

    250-DSN

    250-ENHANCEDSTATUSCODES

    250-8bitmime

    250-BINARYMIME

    250-CHUNKING

    250-VRFY

    250-AUTH LOGIN PLAIN XOAUTH2

    250 OK

    2014-03-12 16:48:20.945 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.945 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.945 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.946 MailApp[9748:3f1b] MCOSMTPSession: [1] AUTH XOAUTH2 dXNlcj1qY2xhcms3Nzc2QG91dGxvb2suY29tAWF1dGg9QmVhcmVyIEV3QkFBcTFEQkFBVUdDQ1hjOHdVL3pGdTlRbkxkWlh5K1luRWxGa0FBVlVnaDhDVzJTN25NTzBCaHRjM1l2ZlRiMXdYWWdsZHVPeWFpZzB3VFhCUUpNSWJTV2FIdkEvTnNBTnRyS0l0ZUpPMU5Ibm96b1drU3Q5WXkwOStkKzJsL3FSNW8wU01QNjFYQktvL2ZrN2puSlNOMklwWWs2bTZRQVNNRU1Uc20rYVg0Y0F5RDhZV3BkZzEvM21pTlBkSVVVMmNaYi8xUUtPM3Fpd25Qb2pBalVsdVJlSlhzOCtneURRSjlYSVVrRXJhdkdpN0VJUWRxWm55dE1Fem9TdkkzQmF3WVJ6amxYOWxST0ppTnFFWlVwVER5cHhtN2NobGtRNnVrMlZhbGhHVFYyK1REcjJqNFVUbFZtMGtsRWUyTTNHNU41R1c4YnFoUUM 2014-03-12 16:48:20.946 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:20.946 MailApp[9748:3f1b] MCOSMTPSession: [-1] 2014-03-12 16:48:50.948 MailApp[9748:3f1b] MCOSMTPSession: [4] 2014-03-12 16:49:01.107 MailApp[9748:60b] sendOutboxEmail error:Unable to authenticate with the current session's credentials. 2014-03-12 16:49:32.113 MailApp[9748:b80f] MCOSMTPSession: [-1] 2014-03-12 16:49:32.113 MailApp[9748:b80f] MCOSMTPSession: [1] QUIT

    2014-03-12 16:49:32.113 MailApp[9748:b80f] MCOSMTPSession: [-1] 2014-03-12 16:49:32.114 MailApp[9748:b80f] MCOSMTPSession: [-1] 2014-03-12 16:49:32.114 MailApp[9748:b80f] MCOSMTPSession: [5]

    Do you have any thoughts on why this might be happening? Thanks.

    opened by jac300 34
  • podspec for binary built version of mailcore2: `preserve_paths` pattern did not match any file

    podspec for binary built version of mailcore2: `preserve_paths` pattern did not match any file

    https://gist.github.com/dinhviethoa/1714b878d8fe7be7dc99

    When I use pod spec lint, I get the following error:

     -> mailcore2 (0.4.5)
        - ERROR | [iOS] The `preserve_paths` pattern did not match any file.
    

    The layout of the zip file is:

    mailcore2-ios-5/include/MailCore/*.h
    mailcore2-ios-5/lib/libMailCore-ios.a
    

    If I prefix the pattern with mailcore2-ios-5, it will go through the lint. Though, when I include mailcore2 in a Podfile, the library and the header files won't show up in the resulting project folder.

    Is there anything I'm missing?

    Thanks!

    @alloy

    opened by dinhvh 32
  • certificate is not retrieved (was: MCOImapOperations does not call completionBlock after the initial execution.)

    certificate is not retrieved (was: MCOImapOperations does not call completionBlock after the initial execution.)

    @dinhviethoa I'm observing the same issue as described in #665 on the latest code. This behaviour seem to occur only on corporate Gmail accounts.

    I have a MCOImapSession on a singleton, called every 5mins to execute MCOImapSearchOperation.

    Putting some breakpoints, it seems to stuck on MCImapSession.cc line num:641 "r = mailimap_ssl_connect_voip(mImap, MCUTF8(mHostname), mPort, isVoIPEnabled());" and does not proceed to next line on succeeding calls. (1st execution will go through).

    1st iteration: 2014-07-24 15:40:03.160 [284:5003] MCIMAPSession.cc:618: connect mailcore::IMAPSession:0x146cac40 2014-07-24 15:40:07.825 [284:5003] MCIMAPSession.cc:641: ssl connect imap.gmail.com 993 2

    2nd iteration: 2014-07-24 15:45:03.313 [284:5003] MCIMAPSession.cc:618: connect mailcore::IMAPSession:0x146cac40

    3rd+ iteration: (no logs from mailcore)

    Many thanks!

    opened by mrrussellong 32
  • Mailcore 2 for iOS as a Framework

    Mailcore 2 for iOS as a Framework

    When are you guys going to just release this as a framework for iOS? Is there some technical limitation stopping you?

    The need for me comes from a lot of trouble getting mailcore2 integrated into my project. Following the directions I found didn't work. With a lot of tweaking it's in there, but unfortunately it's not in as a separate library - it builds every time and runs those scripts.

    opened by TroyJ 32
  • Yahoo & Hotmail Problems

    Yahoo & Hotmail Problems

    Hi, i'm quite new to MailCore 2 and im having trouble fetching emails from yahoo & hotmail accounts. I can fetch gmail emails with no problem.

    Yahoo:

    When I try to fetch email from a yahoo account (imap.mail.yahoo.com) I get the following Error:

    Error Domain=MCOErrorDomain Code=1 "The operation couldn’t be completed. (MCOErrorDomain error 1.)
    

    I couldn't seem to find a list of error codes so i dont know what this error code means.

    With Hotmail accounts you have to use POP3 but i couldn't find a example of how you would fetch emails. I've tried the following Code:

        self.popSession = [[MCOPOPSession alloc] init];
    self.popSession.hostname = hostname;
    self.popSession.port = [port integerValue];
    self.popSession.username = username;
    self.popSession.password = password;
    self.popSession.connectionType = MCOConnectionTypeTLS;
    
    NSLog(@"checking account");
    
    
        self.popMessagesFetchOp = [self.popSession fetchMessagesOperation];
    
        [self.popMessagesFetchOp start:^(NSError *error, NSArray *message ){
    
         NSLog(@"Error:%@", [error localizedDescription]);
         NSLog(@"POP3 Message Array: %@",message);
    
    }];
    

    I don't receive any errors in the console just a NULL array.

    Any help would be much appreciated!

    question 
    opened by Neilfau 32
  • Issues sending emails using open relay exchange on an iPad

    Issues sending emails using open relay exchange on an iPad

    I'm try to use the mailcore2 library with an iPad app. When I try to send an email I get the "Unable to authenticate with the current session's credentials" error.

    We use an open replay for our exchange server. Is there a way to prevent it sending a username and password as I think this maybe the issue?

    opened by jasgrif11 29
  • SMTPSession::checkAccount : errors with

    SMTPSession::checkAccount : errors with "[email protected]"

    Hi,

    I use your library with my mail client, Mailspring, on MacOS and Linux, and it appears that the method used to check if the SMTP server is valid (SMTPSession::checkAccount), is trying to send an email at "[email protected]".

    https://github.com/MailCore/mailcore2/blob/a23882b13a1028753d1bdaef795cfd91acd7be8c/src/core/smtp/MCSMTPSession.cpp#L680

    The problem is that some SMTP servers are responding with an error because the domain "invalid.com" doesn't actually exists. This causes the checkAccount method to fail even though the connection with the server is working fine.

    SMTP Last Response Code: 450
    SMTP Last Response: 4.1.2 <[email protected]>: Recipient address rejected: Domain not found
    

    Thanks in advance for your response. Maxime

    opened by ThePrincelle 2
  • iOS mailCore integration issue

    iOS mailCore integration issue

    Hello the iOS MailCore don't being able to find MCOIMAPMoveMessagesOperation.h file when using CocoaPods and 'MCOSMTPSendOperation' callback not responding when using Carthage. I use XCode version: 14.0

    MCOMessageBuilder *msgBuilder = [[MCOMessageBuilder alloc] init];
    //header;
    if (displayName != nil) {
        msgBuilder.header.from = [MCOAddress addressWithDisplayName:displayName mailbox:mail];
    }else{
        msgBuilder.header.from = [MCOAddress addressWithMailbox:mail];
    }
    msgBuilder.header.to      = [self mailStringToMCOAddress:to];//transform address function
    msgBuilder.header.cc      = [self mailStringToMCOAddress:cc];
    msgBuilder.header.bcc     = [self mailStringToMCOAddress:bcc];
    msgBuilder.header.subject = subject;
    
    if (msgParser != nil) {
          NSArray *inAttach = msgParser.htmlInlineAttachments;
          for (MCOAttachment *attach in inAttach) {
              NSString * path = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@_%@",msgParser.header.messageID,attach.filename]];
              NSData *data = [NSData dataWithContentsOfFile:path];
              if (data) {
                  MCOAttachment *temp = [MCOAttachment attachmentWithData:data filename:attach.filename];
                  temp.inlineAttachment = YES;
                  [msgBuilder addRelatedAttachment:temp];
              }
          }
      }
    if (attachs) {
        for (NSString *name in attachs.allKeys) {
            MCOAttachment *attach = [MCOAttachment attachmentWithData:[attachs objectForKey:name] filename:name];
            [msgBuilder addAttachment:attach];
        }
    }
    
    //body
    [msgBuilder setHTMLBody:body];
    NSData *data = [msgBuilder data];
    
    MCOSMTPSendOperation *send = [self.smtpSession sendOperationWithData:data];
    [send start:^(NSError * _Nullable error) {
        if (error) {
            fail(error);
        }else {
            MCOIMAPAppendMessageOperation *op = [self.imapSession appendMessageOperationWithFolder:@"Sent" messageData:data flags:MCOMessageFlagSeen];
            op.progress = ^(unsigned int current, unsigned int maximum) {
                NSLog(@"%d--%d",current,maximum);
            };
            [op start:^(NSError * _Nullable error, uint32_t createdUID) {
                if (error) {
                    NSLog(@"%u---failed%@",createdUID,error.description);
                }else {
                    NSLog(@"success");
                }
            }];
            complete();
        }
    }];
    
    bug 
    opened by yihoushuhang 1
  • How to remove important label in [Gmail]/Important folder ?

    How to remove important label in [Gmail]/Important folder ?

    Here is the chunk code I have used, It works if the folders are other than [Gmail]/important.

    IMAPFolderQueue = OperationQueue() IMAPFolderQueue?.name = IMAPFolderQueuesNames.storeLabelsOperation.name() IMAPFolderQueue?.qualityOfService = .background let storeLabelsOperationQ = BlockOperation() let semaphore = DispatchSemaphore(value: 0)

        let uidSet =  MCOIndexSet()
        for uid in uids {
            uidSet.add(MCOIndexSet(index: UInt64(uid)))
        }
    
        storeLabelsOperationQ.addExecutionBlock {
            let storeLabelsOperation = self.mailCoreIMAPSession?.storeLabelsOperation(withFolder: folderPath, uids: uidSet, kind: kind, labels: labels)
            storeLabelsOperation?.start({ (error) in
                guard error == nil else {
                    semaphore.signal()
                    return
                }
                semaphore.signal()
                status = true
                return
            })
            semaphore.wait()
        }
        storeLabelsOperationQ.completionBlock = {
            getCompleted(status)
        }
        IMAPFolderQueue?.addOperation(storeLabelsOperationQ)
    

    Thanks in advance !

    opened by sasinderann 0
  • Replaces OSSpinLock with pthread_mutex_t

    Replaces OSSpinLock with pthread_mutex_t

    Fixing #1785 pthread_mutex_t was chosen because

    1. it's already using on some platforms
    2. os_unfair_lock must be allocated on the heap so it couldn't be used as c++ class member (Concurrent Programming With GCD in Swift 3 or SO)
    opened by akkrat 3
  • No extra headers are present in case of Yahoo and Aol

    No extra headers are present in case of Yahoo and Aol

    Summary In the past couple of weeks we started to observe that using Mailcore2 we don't get the extra headers anymore for any of the messages on Yahoo and Aol.

    This is working fine using MailKit (Windows version). It happens on all phones all accounts so I think others encountered with this as well.

    Platform(s)

    <Android><iOS, macOS>
    

    Happens on Mail Server

    <Aol>
    <Yahoo>
    
    bug 
    opened by beczesz 7
Releases(0.6.4)
  • 0.6.4(Aug 1, 2020)

    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.
    Source code(tar.gz)
    Source code(zip)
  • 0.6.3(Jun 4, 2018)

  • 0.6.2(Feb 1, 2016)

  • 0.6.1(Nov 14, 2015)

  • 0.6(Nov 12, 2015)

  • 0.5.1(Mar 26, 2015)

  • 0.5(Dec 15, 2014)

    • Ported to Linux
    • Ported to Windows
    • iOS/OS X: removed ICU dependency
    • Fixed certificate verification on iOS/OS X
    • Added unit tests for messages formats and message rendering
    • Added NNTP support
    • Default to LLVM libc++ on iOS
    • Various bugfixes
    Source code(tar.gz)
    Source code(zip)
Owner
MailCore
MailCore
SwiftUIMailView - MailView allows you to send mail from SwiftUI

SwiftUIMailView The MailView allows you to send mail from SwiftUI. You can: Determine if you can send mail or not. Pass subject, message and recipient

Gordan Glavaš 13 Nov 24, 2022
TempBox - Instant disposable emails for Mac powered by Mail.tm

TempBox Instant disposable emails for Mac powered by Mail.tm Features Native Mac app Create multiple accounts Download message source Download Attachm

Waseem akram 217 Dec 30, 2022
Postal is a swift framework providing simple access to common email providers.

Postal is a swift framework providing simple access to common email providers. Example Connect let postal = Postal(configuration: .icloud(login: "myem

Snips 644 Dec 23, 2022
Send email to any SMTP server like a boss, in Swift and cross-platform

Hedwig is a Swift package which supplies a set of high level APIs to allow you sending email to an SMTP server easily. If you are planning to send ema

Wei Wang 1.1k Jan 3, 2023
Work-hours-mac - Simple app that tracks your work hours from the status bar

Track Your Work Hours Simple app that tracks your work hours from status bar. Fe

Niteo 44 Dec 2, 2022
A script for focusing on work, blocking non-work stuff.

A script for focusing on work, blocking non-work stuff. The idea is to forbid mindless app/website context-switching while you're focused. Once you're

null 3 Jan 23, 2022
SwiftyEmail - A super simple Swift e-mail composer package

SwiftyEmail is a mini library for iOS, iPadOS and Mac Catalyst using MessageUI. With SwiftyEmail, you'll be able to send e-mails from your app calling your user's favorite e-mail app (including third party ones!).

Marcos Morais 5 Nov 20, 2022
A wrapper around UICollectionViewController enabling a declarative API around it's delegate methods using protocols.

Thunder Collection Thunder Collection is a useful framework which enables quick and easy creation of collection views in iOS using a declarative appro

3 SIDED CUBE 4 Nov 6, 2022
Now playing controller from Apple Music, Mail & Podcasts Apple's apps.

SPStorkController About Controller as in Apple Music, Podcasts and Mail apps. Help if you need customize height or suppport modal style in iOS 12. Sim

Ivan Vorobei 2.6k Jan 4, 2023
SwiftUIMailView - MailView allows you to send mail from SwiftUI

SwiftUIMailView The MailView allows you to send mail from SwiftUI. You can: Determine if you can send mail or not. Pass subject, message and recipient

Gordan Glavaš 13 Nov 24, 2022
iOS-mail — ProtonMail iOS client app

iOS-mail Introduction iOS-mail — ProtonMail iOS client app The app is intended for all users of the ProtonMail service. Whether they are paid or free,

null 1.2k Jan 3, 2023
TempBox - Instant disposable emails for Mac powered by Mail.tm

TempBox Instant disposable emails for Mac powered by Mail.tm Features Native Mac app Create multiple accounts Download message source Download Attachm

Waseem akram 217 Dec 30, 2022
An easy-to-use UITableViewCell subclass that implements a swippable content view which exposes utility buttons (similar to iOS 7 Mail Application)

SWTableViewCell An easy-to-use UITableViewCell subclass that implements a swipeable content view which exposes utility buttons (similar to iOS 7 Mail

Christopher Wendel 7.2k Dec 31, 2022
Swipeable UITableViewCell/UICollectionViewCell based on the stock Mail.app, implemented in Swift.

SwipeCellKit Swipeable UITableViewCell/UICollectionViewCell based on the stock Mail.app, implemented in Swift. About A swipeable UITableViewCell or UI

null 6k Jan 7, 2023
A set of SwiftUI dynamic property wrappers that provide a more familiar API for accessing the Contacts framework. (iOS, watchOS, macOS)

Connections Also available as a part of my SwiftUI+ Collection – just add it to Xcode 13+ A set of SwiftUI dynamic property wrappers that provide a mo

SwiftUI+ 9 Oct 7, 2022
Developed with use Swift language. As a third party library used SDWebImage. JSON parsing using URLSession with TMDB API. This app provide by the Core Data structure.

Capstone Project ?? About Developed with use Swift language. As a third party library used SDWebImage. JSON parsing using URLSession with TMDB API. Ad

Ensar Batuhan Unverdi 9 Aug 22, 2022
Kraken - Simple Dependency Injection container for Swift. Use protocols to resolve dependencies with easy-to-use syntax!

Kraken Photo courtesy of www.krakenstudios.blogspot.com Introduction Kraken is a simple Dependency Injection Container. It's aimed to be as simple as

Syed Sabir Salman-Al-Musawi 1 Oct 9, 2020
A simple clean application to provide you with weather forecast data as well as currency rates, all with beautiful melodies and sounds

A simple clean application to provide you with weather forecast data as well as currency rates, all with beautiful melodies and sounds.

Sergey 1 Jan 21, 2022
Simple Swift class to provide all the configurations you need to create custom camera view in your app

Camera Manager This is a simple Swift class to provide all the configurations you need to create custom camera view in your app. It follows orientatio

Imaginary Cloud 1.3k Dec 29, 2022
Prephirences is a Swift library that provides useful protocols and convenience methods to manage application preferences, configurations and app-state.

Prephirences - Preϕrences Prephirences is a Swift library that provides useful protocols and convenience methods to manage application preferences, co

Eric Marchand 557 Nov 22, 2022