MailCore 快速入门指南

 原文: http://libmailcore.com/gettingstarted.html

本文档简单介绍MailCore API的大概内容。

发送邮件

MailCore封装了所有MIME编码和SMTP协议细节,使用它发送邮件非常简单。首先,创建CTCoreMessage对象,设置主题、正文、发件人、至少一个收件人/抄送/密送。注意,收件人/密送人/抄送属性是一个NSSet,包含多个CTCoreAddress对象。

 CTCoreMessage *testMsg = [[CTCoreMessage alloc] init];  

[testMsg setTo:[NSSet setWithObject:[CTCoreAddress addressWithName:@"Monkey"email:@"monkey@monkey.com"]]];  

[testMsg setFrom:[NSSet setWithObject:[CTCoreAddress addressWithName:@"Someone"email:@"test@someone.com"]]];   

[testMsg setBody:@"This is a test message!"];  

[testMsg setSubject:@"This is a subject"];

 一旦设置完属性,就可用CTSMTPConnection来发送邮件:

 NSError *error;

// SMTP协议使用25端口

BOOL success = [CTSMTPConnection sendMessage:testMsg server:@"mail.test.com"username:@"test" password:@"test" port:25 useTLS:YES useAuth:YES error:&error];

if (!success) {     // Present the error } 

 使用IMAP

 通过MailCore使用IMAP协议也很简单。首先,初始化一个CTCoreAccrount对象,然后建立连接:

 // IMAP使用143端口

CTCoreAccount *account = [[CTCoreAccount alloc] init];

BOOL success = [accountconnectToServer:@"mail.theronge.com" port:143connectionType:CTConnectionTypePlain authType:CTImapAuthTypePlainlogin:@"test" password:@"none"];

if (!success) {     // Display the error contained in account.lastError

}  

如果连接失败,返回结果为NO。通过检查account的lastError属性获知具体错误内容。

注意:lastError很常用,其他MailCore对象也使用它来表示最近发生的异常。

一旦与服务器的连接成功,我们可以直接读取文件夹列表:

 NSSet *subFolders = [account subscribedFolders];

   检索返回的NSSet对象,我们可以打印出如下字符串内容(文件夹路径):

 <NSCFSet: 0x309d60> (INBOX.Test.Test22, INBOX, INBOX.TheArchive,INBOX.Test, INBOX.Trash)  

 通过文件夹路径,可就以获得 CTCoreFolder 对象,例如创建一个指向服务器收件箱的连接:

 CTCoreFolder *inbox = [account folderWithPath:@"INBOX"];

 一旦连接到文件夹,我们就可以开始一些有趣的工作了,比如读取改文件夹内的邮件列表,或者删除文件夹,从订阅列表中移走文件夹,查看CTCoreFolder的其他信息。例如,获取收件箱内的邮件列表:

 NSArray *messages = [self.folder messagesFromSequenceNumber:1 to:0 withFetchAttributes:CTFetchAttrEnvelope];  

 也可以通过UID来检索邮件列表:

 NSArray *messages = [self.folder messagesFromUID:1 to:0 withFetchAttributes:CTFetchAttrEnvelope];

 两个方法是一样的,只不过前者使用邮件编号来指定要读取的邮件,而后者使用UID。

UID和邮件编号都是从1开始,to参数指定为0,表示将读取到最后一封邮件。邮件编号只能识别本次连接过程中某封邮件。编号是连续的。因此,如果文件夹中有100封邮件,则邮件会被编号为1到100。UID在文件夹中也是唯一的,哪怕在两次连接中也是唯一的。因此它是同步的。UID的值是自动增加的,但不一定连续。因此,如果文件夹中有100封邮件,那么第一个UID可能是5,接着是20,27,103,一直到200。

这个两个方法都使用了fetch attributes参数,这决定了你要从服务器获取什么内容。关于fetchattributes的更多细节,请参考API文档。

获取到邮件列表之后,我们可以读取其中第一封并下载邮件内容:

 CTCoreMessage *msg = [messages objectAtIndex:0];

BOOL isHTML;

NSString *body = [msg bodyPreferringPlainText:&isHTML];

 

 

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值