libreworks/swiftmailer-spools

Additional spools for use with the SwiftMailer library

2.0.0 2018-02-10 23:05 UTC

README

Additional spools for use with the SwiftMailer library.

This includes spools for PDO and MongoDB.

Packagist Build Status Scrutinizer Code Quality Code Coverage

Installation

You can install this library using Composer:

$ composer require libreworks/swiftmailer-spools
  • The master branch (version 2.x) of this project depends on SwiftMailer 6.0+, which requires PHP 7.0.
  • Version 1.x of this project depends on SwiftMailer 5.4+, which requires PHP 5.3. It also runs just fine on HHVM.

Compliance

Releases of this library will conform to Semantic Versioning.

Our code is intended to comply with PSR-1 and PSR-2. If you find any issues related to standards compliance, please send a pull request!

Examples

Here's how to instantiate a Swift_Mailer object that uses the spools to send.

$mailer = \Swift_Mailer::newInstance(
    \Swift_SpoolTransport::newInstance(
        $spool // your spool goes here
    )
);
// this e-mail will get spooled
$mailer->send(new \Swift_Message($subject, $body, $contentType, $charset));

Here's how to instantiate a Swift_Transport to send spooled e-mails.

$transport = \Swift_SmtpTransport::newInstance($smtpHost, $smtpPort, $smtpEncrypt)
    ->setUsername($smtpUsername)
    ->setPassword($smtpPassword);

$spool->recover();
$spool->flushQueue($transport);

PDO Spool

$pdo = new \PDO("mysql:dbname=testdb;host=127.0.0.1", 'user', 'pass');
$spool = new \Swift_PdoSpool(
    $pdo,
    "email", // table
    "id", // primary key field
    "message", // serialized email field
    "sentOn", // sent integer timestamp
);

MongoDB Spool

$manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");
$rp = new \MongoDB\Driver\ReadPreference(\MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED);
$wr = new \MongoDB\Driver\WriteConcern(\MongoDB\Driver\WriteConcern::MAJORITY);
$spool = new \Swift_MongoDbSpool(
    $manager,
    "dbname.emails",
    $rp, // optional
    $wc, // optional
);

Mongo Spool (deprecated in 1.x; removed in 2.x)

$client = new \MongoClient();
$db = new \MongoDB("dbname", $client);
$collection = new \MongoCollection($db, "emails");
$spool = new \Swift_MongoSpool($collection);