Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
/smtpdPublic
forked fromTheFox/smtpd

SMTP server (library) for receiving emails, written in pure PHP.

License

NotificationsYou must be signed in to change notification settings

tck/smtpd

 
 

Repository files navigation

SMTP server (library) for receiving emails, written in pure PHP. This library provides an interface to the SMTP server-side protocol with PHP. It creates a\Laminas\Mail\Message Class object for every incoming email and hands this object to a custom PHP function for further processing. The project is in Beta status, so it's not recommended for production use.

Thed inSMTPd stands forDaemon. This script can run in background like any other daemon process. It's not meant for running as a webapplication.

Why this project?

Believe it or not,email is still the killer feature of the Internet. There are tons of projects likePHPMailer: to send emails programmatically (with PHP). But there are not so many to receive emails from SMTP.

With this interface you can do something like this for your app users:

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

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 anyemail client.Thunderbird for instance.

Project Outlines

The project outlines as described in my blog post aboutOpen Source Software Collaboration.

  • The main purpose of this software is to provide a server-side SMTP 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

  • FullRFC 821 implementation.
  • FullRFC 1651 implementation.
  • FullRFC 1869 implementation.
  • ReplaceLaminas\Mail with a better solution.

Installation

The preferred method of installation is viaPackagist andComposer. Run the following command to install the package and add it as a requirement to composer.json:

composer require thefox/smtpd

Delivery

At the moment the server accepts all incoming emails. You decide what happens with incoming emails by addingEvents to theServer object ($server->eventAdd($event)). The server can handle certain events. Each event will be executed on a certain trigger. Even if you don't add any Events to the Server it accepts all incoming emails.

Events

At the moment there are two Event Triggers.

  • TRIGGER_NEW_MAIL: will be triggered when a Client has finished transmitting a new email.
  • TRIGGER_AUTH_ATTEMPT: will be triggered when a Client wants to authenticate. Return a boolean from the callback function whether the authentication was successful or not.

Examples

See alsoexample.php file for full examples.

Trigger New Mail Example

$server =newServer(...);$event =newEvent(Event::TRIGGER_NEW_MAIL,null,function(Event$event,$from,$rcpts,$mail){// Do stuff: handle email, ...});$server->addEvent($event);$server->loop();

Trigger Auth Example

$server =newServer(...);$event =newEvent(Event::TRIGGER_AUTH_ATTEMPT,null,function(Event$event,$type,$credentials):bool{// Do stuff: Check credentials against database, ...returntrue;});$server->addEvent($event);$server->loop();

Use SMTP Server with own loop

$server =newServer(...);// Set up server here.// Add Events, etc, ...while(myApplicationRuns()){// Do stuff your application needs.// ...// Run main SMTPd loop, once.$server->run();usleep(10000);// Never run a main thread loop without sleep. Never!}

RFC 821 Implementation

Complete implementation

  • 3.5 OPENING AND CLOSING

Incomplete implementation

  • 3.1 MAIL
  • 4.1.1 COMMAND SEMANTICS
    • HELO
    • MAIL
    • RCPT
    • DATA
    • NOOP
    • QUIT

RFC 1651 Implementation

Complete implementation

  • 4.1.1 First command
  • 4.5 Error responses from extended servers

RFC 3207 Implementation

RFC 4954 Implementation

    1. The AUTH Command

Related Links

Related Projects

Project Links

About

SMTP server (library) for receiving emails, written in pure PHP.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP98.3%
  • Shell1.7%

[8]ページ先頭

©2009-2025 Movatter.jp