作者: Qter 时间: 2020-1-12 22:34
[color=rgba(0, 0, 0, 0.9)]Open Source project that I initiated. Mail library focusing on being cross-platform: Linux, *BSD, Solaris, Mac OS X, Windows. More than 30 contributors.
[color=rgba(0, 0, 0, 0.9)]- It implements most of the standard email protocols : SMTP, POP3 and IMAP. Standard mail storage : RFC 822, MIME, mbox, MH and maildir. Berkeley DB cache storage. A first functional version has been delivered in 2002.
[color=rgba(0, 0, 0, 0.9)]- Mail application for Linux, text user interface : etpan, http://www.etpan.org/etpan.
[color=rgba(0, 0, 0, 0.9)]- Integrated libetpan in Claws Mail http://www.claws-mail.org.
[color=rgba(0, 0, 0, 0.9)]- Mail application for Linux, graphic user interface, prototype : etpanX, http://www.etpan.org/etpanX (2006).
[color=rgba(0, 0, 0, 0.9)]- EtPanKit framework for Mac OS X: Objective-C, asynchronous API for IMAP and SMTP access, mail parsing. Based on libetpan. Refined API. An alpha version has been completed in one month and delivered in 2010.
[color=rgba(0, 0, 0, 0.9)]In this experience, I focused on delivering a fully functional and reusable software component. I have learned to build a clean and extensible API. I maintain it until now without breaking compatibility. It has been used in some open source projects, as well as in industry, for example: at Bell Canada for their Voice Mail system, and in some commercial software, for example: Notify 2, http://vibealicious.com/apps/notify and reMail, http://www.remail.com.
[color=rgba(0, 0, 0, 0.9)]
-t
enum {
CONNECTION_TYPE_PLAIN, /* when the connection is plain text */
CONNECTION_TYPE_STARTTLS, /* when the connection is first plain,
then, we want to switch to
TLS (secure connection) */
CONNECTION_TYPE_TRY_STARTTLS, /* the connection is first plain,
then, we will try to switch to TLS */
CONNECTION_TYPE_TLS, /* the connection is over TLS */
CONNECTION_TYPE_COMMAND, /* the connection is over a shell command */
CONNECTION_TYPE_COMMAND_STARTTLS, /* the connection is over a shell
command and STARTTLS will be used */
CONNECTION_TYPE_COMMAND_TRY_STARTTLS, /* the connection is over
a shell command and STARTTLS will
be tried */
CONNECTION_TYPE_COMMAND_TLS /* the connection is over a shell
command in TLS */
};