Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Delayed Mail for PHP

This is a simple app for sending emails through PHP without blocking sending and waiting answer from the SMTP server. It provides some classes as:

  • Message to compose the message
  • Server to connect to the SMTP server
  • Sender to run and send the queued messages
  • Runner to fire a Sender object

How it works

First we need the server configurations. There is a sample file on the test dir, called delayedmail.ini:

host =
port = 587
user = taq
password = secret
path = /tmp/delayedmailtest

The only different parameter there is the path parameter. This is where the mail files will be stored.


If you use two-phase authentication on a Gmail account, sending emails with this library will not work. You need a less secure account to make it works.

Storing messages to send later

The data store used are just regular plain text files. They are stored on the path configured above. On that dir there will be another two subdirs:

  • delivery where the queued messages are.
  • sent, where the messages are moved after Sender send them.
  • error, where the messages are moved if there are some errors on them.

How to use it

Queuing messages

Just include the delayedmail.php on your app, create a new Server object, configure it, compose and queue a new message:

   include_once "delayedmail.php";

   $server = new DelayedMail\Server("myconfigs.ini");
   $msg    = new DelayedMail\Message();
   $msg->from("taq <>")->
           to("Eustaquio Rangel <>")->
           cc("Eustaquio Rangel <>")->
      subject("DelayedMail test!")->
         text("This is just\na test!")->

If you check the delivery dir now, there will be a file there with the message contents.

You can use arrays on attach and cc.

Running the runner

Just edit the runner.php file with the desired interval and configuration file (usually the same config file as the server) and run it from the command line:

$dir = dirname(__FILE__);
echo "- loading classes from $dir\n";
include_once "$dir/delayedmail.php";

$sender = new DelayedMail\Sender(5,"delayedmail.ini");
$ php runner.php
- initializing ...
- checking for files in /tmp/delayedmailtest/delivery ...
- no files found.


Sending emails

Go to the test directory, configure the delayedmail.ini and test.php files to the configs you want, and run:

$ php test.php

And then check your email app on the addresses you configured.


Run composer update, go to the test directory and run:

$ phpunit .


A simple tool to send emails with PHP without blocking




No packages published


You can’t perform that action at this time.