aboutsummaryrefslogtreecommitdiffhomepage
path: root/README.md
diff options
context:
space:
mode:
authorGravatar Oliver Rickard <ocrickard@gmail.com>2013-06-03 10:08:49 -0700
committerGravatar Oliver Rickard <ocrickard@gmail.com>2013-06-03 10:08:49 -0700
commit11d23e3440fd4c0eb5a24d40bfa016c33b780ec5 (patch)
tree10e761ff5103cf82bab87c589965da3f5625a397 /README.md
parentce7f0104b894b2d656967ecd85679cc819202e92 (diff)
Pared down the readme, moved the contents into the wiki
Diffstat (limited to 'README.md')
-rw-r--r--README.md77
1 files changed, 0 insertions, 77 deletions
diff --git a/README.md b/README.md
index 597edb92..b9af5466 100644
--- a/README.md
+++ b/README.md
@@ -31,8 +31,6 @@ MailCore 2 provides a simple and asynchronous Objective-C API to work with the e
## Basic IMAP Usage ##
-### Asynchrony ###
-
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:
```objc
@@ -63,78 +61,3 @@ Using MailCore 2 is just a little more complex conceptually than the original Ma
```
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**.
-
-## Anatomy of a Message ##
-
-<img src="https://rawgithub.com/ocrickard/mailcore2/master/mailcore-schema.svg" width="783" height="559" />
-
-Background Reading:
-* [RFC821](http://tools.ietf.org/html/rfc821)
-* [RFC822](http://tools.ietf.org/html/rfc822)
-* [RFC5322](http://tools.ietf.org/html/rfc5322)
-* [RFC2045](http://tools.ietf.org/html/rfc2045)
-* [RFC2046](http://tools.ietf.org/html/rfc2046)
-* [RFC2047](http://tools.ietf.org/html/rfc2047)
-* [RFC2048](http://tools.ietf.org/html/rfc2048)
-* [RFC2049](http://tools.ietf.org/html/rfc2049)
-
-MailCore 2 has a new message structure that more closely mimics the structure of raw emails. This gives you as the user a lot of power, but can also be a little bewildering at first. When a fetch request completes and returns its results to your block, you will get an array of `MCOIMAPMessage` objects. Depending on what `kind` the fetch was made with, this message object can be only partially loaded from IMAP. In our example above, we used the `MCOIMAPMessagesRequestKindHeaders` as our `requestKind`. So we won't find any fields outside of the `header` filled out in the returned messages array. If you need more data, you can combine the `MCOIMAPMessagesRequestKind` bit masks:
-
-
-```objc
- //From the Mac Example
- MCOIMAPMessagesRequestKind requestKind = (MCOIMAPMessagesRequestKind)
- (MCOIMAPMessagesRequestKindHeaders | MCOIMAPMessagesRequestKindStructure |
- MCOIMAPMessagesRequestKindInternalDate | MCOIMAPMessagesRequestKindHeaderSubject |
- MCOIMAPMessagesRequestKindFlags);
-```
-
-Many of the properties you probably need are either in the `header` of an MCOIMAPMessage, or direct properties of the message.
-
-So now comes the tricky part: you want the full message bodies from the emails. MailCore 2 allows you to fetch the entire contents of a message through the `MCOIMAPFetchContentOperation` instance, which responds with the NSData representation of the email. You can then use `MCOMessageParser` to generate your HTML body content.
-
-### HTML Rendering ###
-
-The three subclasses of MCOAbstractMessage (MCOIMAPMessage, MCOMessageParser, MCOMessageBuilder) each have html rendering APIs. HTML rendering of emails is actually a pretty complex operation. Emails come in many shapes and forms, and writing a single rendering engine for every application is difficult, and ultimately constricts you as the user. Instead, MailCore 2 uses HTML rendering delegates that you can use to compose a single html body out of a (potentially) complicated body structure.
-
-So, to render HTML from a MCOAbstractMessage subclass (MCOMessageParser, MCOIMAPMessage, MCOMessageBuilder), you can implement the `MCOHTMLRendererDelegate` protocol. For each body part or attachment, you provide a delegate method that is able to provide a template, and the data to fit in that template. For example, here is one method pair for the main header:
-
-```objc
-- (NSString *)MCOMessageView_templateForMainHeader:(MCOMessageView *)view {
- NSLog(@"%s", __PRETTY_FUNCTION__);
- return @"<div style=\"background-color:#eee\">\
- <div><b>From:</b> {{FROM}}</div>\
- <div><b>To:</b> {{TO}}</div>\
- </div>";
-}
-
-- (NSDictionary *)MCOMessageView:(MCOMessageView *)view templateValuesForHeader:(MCOMessageHeader *)header {
- NSMutableDictionary *templateValues = [[NSMutableDictionary alloc] init];
-
- if(header.from) {
- templateValues[@"FROM"] = header.from.displayName ?: (header.from.mailbox ?: @"N/A");
- }
-
- if(header.to.count > 0) {
- NSMutableString *toString = [[NSMutableString alloc] init];
- for(MCOAddress *address in header.to) {
- if(toString.length > 0) {
- [toString appendString:@", "];
- }
- [toString appendFormat:@"%@", address.displayName ?: (address.mailbox ?: @"N/A")];
- }
- templateValues[@"TO"] = toString;
- }
-
- NSLog(@"%s:%@", __PRETTY_FUNCTION__, templateValues);
-
- return templateValues;
-}
-```
-
-As you can see, we use [ctemplates](https://code.google.com/p/ctemplate/) in order to format and insert the data we want to display in different parts of the message.
-
-### TODO for this guide ###
-* Add images
-* Add more in-depth steps/examples for how to work with imap messages
-* Add examples for POP and SMTP.