前些天有读者提出需要在iPhone中开发Email的程序。在iPhone的SDK中除了使用mailto的方式发送邮件之外暂时还没有其他更好的方法。

这里介绍两个基于Objective-C的Open Source的Email代码,理论上来说经过微小的修改就可以用于iPhone中,不过需要注意的是请注意这两个代码的授权方式。

 

Pantomime

是一个用于开发邮件程序的完整框架,而且有相当多的基于Mac的桌面程序都使用了这个框架。在功能方面,支持MIME编码和解码,完全支持IMAP和POP3协议,并支持本地邮件发送或使用远程SMTP发送,支持SSL/TLS安全发送及接收邮件机制。

它的大部分代码都是使用Objective-C写成,只有一小部分需要性能的代码用c写成,另外它还使用了一点eml

代码。它既可以用于Mac OSX,还可以在GNUStep下编译。

Pantomime的使用非常简单,而且下载包中也提供了完善的使用例子,仅仅使用很短的代码就可以实现邮件的接收、发送以及密码验证等功能。

如果你希望开发一个完整的电子邮件程序,相信Pantomime是最好的选择。下载地址在这里

,版本为1.2.0pre3。

另外一个代码的名字叫做MailCore Framework

,由Matt Ronge开发(感觉做Mac开发的人叫Matt的好多……)。同样非常好用,也自带了两个简单清楚的例子。

用MailCore Framework发送邮件非常简单:

 

  1. CTCoreMessage *
    testMsg =
    [
    [

    CTCoreMessage alloc

    ]

    init

    ]

    ;
  2. [

    testMsg setTo:
    [

    NSSet

    setWithObject

    :
    [

    CTCoreAddress addressWithName:
    @"Monkey"

    email:
    @"monkey@monkey.com"

    ]
    ]
    ]

    ;
  3. [

    testMsg setFrom:
    [

    NSSet

    setWithObject

    :
    [

    CTCoreAddress addressWithName:
    @"Someone"

    email:
    @"test@someone.com"

    ]
    ]
    ]

    ;
  4. [

    testMsg setBody:
    @"This is a test message!"

    ]

    ;
  5. [

    testMsg setSubject:
    @"This is a subject"

    ]

    ;

设置好之后就可以直接发送:

  1. CTSMTPConnection sendMessage:
    testMsg server

    :
    @"mail.test.com"

    username:
    @"test"

    password

    :
    @"test"

    port

    :
    25

    useTLS:
    YES

    shouldAuth:
    YES

    ]

    ;
  2. [

    testMsg release

    ]

    ;

需要注意的是MailCore并不支持多线程,另外MailCore将所有信息都保存在内存中,因此需要开发者自己手写保存的代码了。不过虽然如此,它还是一个非常简单易用的邮件接收发送代码,建议读者下来看看。

MailCore的下载地址在这里

,其中包括了文档和例子。