2017 © Pedro Peláez
 

library imapd

IMAP server (library) written in pure PHP.

image

thefox/imapd

IMAP server (library) written in pure PHP.

  • Sunday, November 26, 2017
  • by TheFox
  • Repository
  • 3 Watchers
  • 23 Stars
  • 329 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 5 Forks
  • 2 Open issues
  • 11 Versions
  • 0 % Grown

The README.md

IMAPd

IMAP server (library) to serve emails to an email client, written in pure PHP., (*1)

The d in SMTPd stands for Daemon. This script can run in background like any other daemon process. It's not meant for running as a webapplication., (*2)

Why this project?

Believe it or not, email is still the killer feature of the Internet. There are tons of projects for accessing and fetching emails from an IMAP/POP3 server. But there are not so many providing a programmatically interface to serve emails to an email client., (*3)

With this interface you can do something like this for your app users:, (*4)

+--------------+     +-------+     +------------------------+     +------+
| Your PHP App +---> | IMAPd +---> | MUA (like Thunderbird) +---> | User |
+--------------+     +-------+     +------------------------+     +------+

This is useful when you have a messaging application written in PHP but no graphical user interface for it. So your graphical user interface can be any email client. Thunderbird for instance., (*5)

Project Outlines

The project outlines as described in my blog post about Open Source Software Collaboration., (*6)

  • The main purpose of this software is to provide a server-side IMAP API for PHP scripts.
  • Although the RFC implementations are not completed yet, they must be strict.
  • More features can be possible in the future. In perspective of the protocols the features must be a RFC implementation.
  • This list is open. Feel free to request features.

Planned Features

  • Full RFC 3501 Implementation.
  • Replace Zend\Mail with a better solution.

Installation

The preferred method of installation is via Packagist and Composer. Run the following command to install the package and add it as a requirement to composer.json:, (*7)

composer require thefox/imapd

Usage

See example.php file for more information., (*8)

RFC 3501 Implementation

Complete implementation

  • 6.1.2 NOOP Command
  • 6.1.3 LOGOUT Command
  • 6.4.1 CHECK Command
  • 6.4.7 COPY Command
  • 7.1.1 OK Response
  • 7.1.2 NO Response
  • 7.1.3 BAD Response
  • 7.1.5 BYE Response
  • 7.4.1 EXPUNGE Response

Incomplete implemention

  • 2.3.1.1 Unique Identifier (UID) Message Attribute
  • 2.3.1.2 Message Sequence Number Message Attribute
  • 2.3.2 Flags Message Attribute
  • 6.1.1 CAPABILITY Command
  • 6.2.2 AUTHENTICATE Command
  • 6.2.3 LOGIN Command
  • 6.3.1 SELECT Command
  • 6.3.6 SUBSCRIBE Command
  • 6.3.7 UNSUBSCRIBE Command
  • 6.3.8 LIST Command
  • 6.3.9 LSUB Command
  • 6.3.11 APPEND Command
  • 6.4.2 CLOSE Command
  • 6.4.4 SEARCH Command
  • 6.4.5 FETCH Command
  • 6.4.6 STORE Command
  • 6.4.8 UID Command
  • 7.1.4 PREAUTH Response
  • 7.2.1 CAPABILITY Response
  • 7.2.2 LIST Response
  • 7.2.3 LSUB Response
  • 7.2.5 SEARCH Response
  • 7.3.1 EXISTS Response
  • 7.3.2 RECENT Response
  • 7.4.2 FETCH Response

TODO

  • Some tasks are commented with NOT_IMPLEMENTED. Implement these.
  • @TODO are to be complete the PHP Code Sniffer tests before releasing a new version.

Alternatives for Zend\Mail

The Versions