Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/taq/delayedmail

A simple tool to send emails with PHP without blocking
https://github.com/taq/delayedmail

background email php

Last synced: 1 day ago
JSON representation

A simple tool to send emails with PHP without blocking

Awesome Lists containing this project

README

        

# 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 = smtp.gmail.com
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.

**VERY IMPORTANT**

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:

```php
from("taq ")->
to("Eustaquio Rangel ")->
cc("Eustaquio Rangel ")->
subject("DelayedMail test!")->
text("This is just\na test!")->
attach("taq.jpg");
$server->push($msg);
?>
```

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:

```php
run();
?>
```

```php
$ 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 .
```