PHP Classes

File: README.markdown

Recommend this page to a friend!
  Classes of Eustaquio Rangel de Oliveira Jr.  >  PHP Delayed Email class  >  README.markdown  >  Download  
File: README.markdown
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: PHP Delayed Email class
Queue email messages in files to send them later
Author: By
Last change: Setting the message type.
Date: 21 days ago
Size: 2,788 bytes


Class file image Download
# 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

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.

## Testing

### 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.

### Code

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

$ phpunit .