diff --git a/.gitignore b/.gitignore
index 215278b9f18ebd9302d6c0a2702c9a87c91a6779..6a1b2aef80bf4fd20377cbe222193cdc57358d67 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@ build
 src/ApnsPHP
 src/Psr
 src/Resque
+src/PHPMailer
diff --git a/src/Lunr/Vortex/Email/EmailDispatcher.php b/src/Lunr/Vortex/Email/EmailDispatcher.php
index e4cf93a828a36ca341adfd46e3128db7a2464875..7f504b81b3c30185e818e1a3e78d56e973a23b58 100644
--- a/src/Lunr/Vortex/Email/EmailDispatcher.php
+++ b/src/Lunr/Vortex/Email/EmailDispatcher.php
@@ -14,6 +14,7 @@
 namespace Lunr\Vortex\Email;
 
 use Lunr\Vortex\PushNotificationDispatcherInterface;
+use PHPMailer\PHPMailer\Exception as PHPMailerException;
 
 /**
  * Email Notification Dispatcher.
@@ -40,21 +41,21 @@ class EmailDispatcher implements PushNotificationDispatcherInterface
 
     /**
      * Shared instance of the Mail class.
-     * @var Mail
+     * @var \PHPMailer\PHPMailer\PHPMailer
      */
     private $mail;
 
     /**
      * Shared instance of a Logger class.
-     * @var LoggerInterface
+     * @var \Psr\Log\LoggerInterface
      */
     private $logger;
 
     /**
      * Constructor.
      *
-     * @param Mail            $mail   Shared instance of the Mail class.
-     * @param LoggerInterface $logger Shared instance of a Logger.
+     * @param \PHPMailer\PHPMailer\PHPMailer $mail   Shared instance of the PHPMailer class.
+     * @param \Psr\Log\LoggerInterface       $logger Shared instance of a Logger.
      */
     public function __construct($mail, $logger)
     {
@@ -78,23 +79,42 @@ class EmailDispatcher implements PushNotificationDispatcherInterface
     }
 
     /**
+     * Get a cloned instance of the mail transport class.
+     *
+     * @return \PHPMailer\PHPMailer\PHPMailer $mail Cloned instance of the PHPMailer class
+     */
+    private function clone_mail()
+    {
+        return clone $this->mail;
+    }
+
+    /**
      * Send the notification.
      *
      * @return EmailResponse $return Response object
      */
     public function push()
     {
-        $this->mail->set_from($this->source);
-        $this->mail->add_to($this->endpoint);
+        $mail = $this->clone_mail();
 
-        $payload_array = json_decode($this->payload, TRUE);
+        try
+        {
+            $mail->setFrom($this->source);
+            $mail->addAddress($this->endpoint);
+
+            $payload_array = json_decode($this->payload, TRUE);
 
-        $this->mail->set_subject($payload_array['subject']);
-        $this->mail->set_message($payload_array['body']);
+            $mail->Subject = $payload_array['subject'];
+            $mail->Body = $payload_array['body'];
 
-        $response = $this->mail->send();
+            $mail->send();
 
-        $res = new EmailResponse($response, $this->logger, $this->endpoint);
+            $res = new EmailResponse($mail, $this->logger, $this->endpoint);
+        }
+        catch (PHPMailerException $e)
+        {
+            $res = new EmailResponse($mail, $this->logger, $this->endpoint);
+        }
 
         $this->endpoint = '';
         $this->payload  = '';
diff --git a/src/Lunr/Vortex/Email/EmailResponse.php b/src/Lunr/Vortex/Email/EmailResponse.php
index 7dbf69d21d80ce4237d040df64df5919d03a2da6..265f87745d233f69cc048e53b995ef4678b55f6e 100644
--- a/src/Lunr/Vortex/Email/EmailResponse.php
+++ b/src/Lunr/Vortex/Email/EmailResponse.php
@@ -37,15 +37,15 @@ class EmailResponse implements PushNotificationResponseInterface
     /**
      * Constructor.
      *
-     * @param Boolean         $response Response of the Mail Class.
-     * @param LoggerInterface $logger   Shared instance of a Logger.
-     * @param String          $email    The email address that the message was sent to.
+     * @param \PHPMailer\PHPMailer\PHPMailer $mail   Instance of the PHPMailer Class.
+     * @param \Psr\Log\LoggerInterface       $logger Shared instance of a Logger.
+     * @param String                         $email  The email address that the message was sent to.
      */
-    public function __construct($response, $logger, $email)
+    public function __construct($mail, $logger, $email)
     {
         $this->endpoint = $email;
 
-        if ($response === TRUE)
+        if ($mail->isError() === FALSE)
         {
             $this->status = PushNotificationStatus::SUCCESS;
         }
@@ -53,8 +53,8 @@ class EmailResponse implements PushNotificationResponseInterface
         {
             $this->status = PushNotificationStatus::ERROR;
 
-            $context = [ 'endpoint' => $email ];
-            $logger->warning('Sending email notification to {endpoint} failed.', $context);
+            $context = [ 'endpoint' => $email, 'message' => $mail->ErrorInfo ];
+            $logger->warning('Sending email notification to {endpoint} failed: {message}', $context);
         }
     }
 
diff --git a/src/Lunr/Vortex/Email/Tests/EmailDispatcherBaseTest.php b/src/Lunr/Vortex/Email/Tests/EmailDispatcherBaseTest.php
index 7343faa44e69ab0c57bccf00005edc40bdfdead8..6b61d2a435d557b3900ca3a0058d9746bbea4e08 100644
--- a/src/Lunr/Vortex/Email/Tests/EmailDispatcherBaseTest.php
+++ b/src/Lunr/Vortex/Email/Tests/EmailDispatcherBaseTest.php
@@ -57,6 +57,20 @@ class EmailDispatcherBaseTest extends EmailDispatcherTest
         $this->assertSame($this->mail, $this->get_reflection_property_value('mail'));
     }
 
+    /**
+     * Test that clone_mail() returns a cloned email transport class.
+     *
+     * @covers Lunr\Vortex\Email\EmailDispatcher::clone_mail
+     */
+    public function testCloneMailReturnsClonedMailClass()
+    {
+        $method = $this->get_accessible_reflection_method('clone_mail');
+
+        $mail = $method->invoke($this->class);
+
+        $this->assertNotSame($mail, $this->mail);
+    }
+
 }
 
 ?>
diff --git a/src/Lunr/Vortex/Email/Tests/EmailDispatcherPushTest.php b/src/Lunr/Vortex/Email/Tests/EmailDispatcherPushTest.php
index 59321520a1574320341427d1f5d2206922200130..41684fd95ace7d2ddbc5103ffdfdb32217246796 100644
--- a/src/Lunr/Vortex/Email/Tests/EmailDispatcherPushTest.php
+++ b/src/Lunr/Vortex/Email/Tests/EmailDispatcherPushTest.php
@@ -13,6 +13,8 @@
 
 namespace Lunr\Vortex\Email\Tests;
 
+use PHPMailer\PHPMailer\Exception as PHPMailerException;
+
 /**
  * This class contains test for the push() method of the EmailDispatcher class.
  *
@@ -32,27 +34,59 @@ class EmailDispatcherPushTest extends EmailDispatcherTest
         $this->set_reflection_property_value('source', 'sender@domain.com');
         $this->set_reflection_property_value('payload', '{"subject": "subject", "body": "body"}');
 
+        $this->mock_method([ $this->class, 'clone_mail' ], 'return $this->mail;', 'private');
+
         $this->mail->expects($this->once())
-                   ->method('set_from')
+                   ->method('setFrom')
                    ->with($this->get_reflection_property_value('source'));
 
         $this->mail->expects($this->once())
-                   ->method('add_to')
+                   ->method('addAddress')
                    ->with($this->get_reflection_property_value('endpoint'));
 
         $this->mail->expects($this->once())
-                   ->method('set_subject')
-                   ->with('subject');
+                   ->method('send')
+                   ->will($this->returnValue(TRUE));
+
+        $this->assertInstanceOf('Lunr\Vortex\Email\EmailResponse', $this->class->push());
+
+        $this->assertEquals($this->mail->Subject, 'subject');
+        $this->assertEquals($this->mail->Body, 'body');
+
+        $this->unmock_method([ $this->class, 'clone_mail' ]);
+    }
+
+    /**
+     * Test that push() returns EmailResponseObject also on error.
+     *
+     * @covers Lunr\Vortex\Email\EmailDispatcher::push
+     */
+    public function testPushReturnsEmailResponseObjectOnError()
+    {
+        $this->set_reflection_property_value('endpoint', 'recipient@domain.com');
+        $this->set_reflection_property_value('source', 'sender@domain.com');
+        $this->set_reflection_property_value('payload', '{"subject": "subject", "body": "body"}');
+
+        $this->mock_method([ $this->class, 'clone_mail' ], 'return $this->mail;', 'private');
+
+        $this->mail->expects($this->once())
+                   ->method('setFrom')
+                   ->with($this->get_reflection_property_value('source'));
 
         $this->mail->expects($this->once())
-                   ->method('set_message')
-                   ->with('body');
+                   ->method('addAddress')
+                   ->with($this->get_reflection_property_value('endpoint'));
 
         $this->mail->expects($this->once())
                    ->method('send')
-                   ->will($this->returnValue(TRUE));
+                   ->will($this->throwException(new PHPMailerException));
 
         $this->assertInstanceOf('Lunr\Vortex\Email\EmailResponse', $this->class->push());
+
+        $this->assertEquals($this->mail->Subject, 'subject');
+        $this->assertEquals($this->mail->Body, 'body');
+
+        $this->unmock_method([ $this->class, 'clone_mail' ]);
     }
 
     /**
@@ -66,6 +100,8 @@ class EmailDispatcherPushTest extends EmailDispatcherTest
         $this->set_reflection_property_value('source', 'sender@domain.com');
         $this->set_reflection_property_value('payload', '{"subject": "subject", "body": "body"}');
 
+        $this->mock_method([ $this->class, 'clone_mail' ], 'return $this->mail;', 'private');
+
         $this->mail->expects($this->once())
                    ->method('send')
                    ->will($this->returnValue(TRUE));
@@ -74,6 +110,8 @@ class EmailDispatcherPushTest extends EmailDispatcherTest
 
         $this->assertPropertyEquals('endpoint', '');
         $this->assertPropertyEquals('payload', '');
+
+        $this->unmock_method([ $this->class, 'clone_mail' ]);
     }
 
 }
diff --git a/src/Lunr/Vortex/Email/Tests/EmailDispatcherTest.php b/src/Lunr/Vortex/Email/Tests/EmailDispatcherTest.php
index da9b5b43ad5193a3d6112889d63740ead7b5e381..57ca7f8342ee079cbd5b48b96ce25a2686db4be3 100644
--- a/src/Lunr/Vortex/Email/Tests/EmailDispatcherTest.php
+++ b/src/Lunr/Vortex/Email/Tests/EmailDispatcherTest.php
@@ -14,8 +14,6 @@
 namespace Lunr\Vortex\Email\Tests;
 
 use Lunr\Vortex\Email\EmailDispatcher;
-// use Lunr\Vortex\Email\EmailPriority;
-// use Lunr\Vortex\Email\EmailType;
 use Lunr\Halo\LunrBaseTest;
 use ReflectionClass;
 
@@ -28,14 +26,14 @@ use ReflectionClass;
 abstract class EmailDispatcherTest extends LunrBaseTest
 {
     /**
-     * Mock instance of the Mail class.
-     * @var Mail
+     * Mock instance of the PHPMailer class.
+     * @var \PHPMailer\PHPMailer\PHPMailer
      */
     protected $mail;
 
     /**
      * Mock instance of a Logger class.
-     * @var LoggerInterface
+     * @var \Psr\Log\LoggerInterface
      */
     protected $logger;
 
@@ -50,7 +48,7 @@ abstract class EmailDispatcherTest extends LunrBaseTest
      */
     public function setUp()
     {
-        $this->mail   = $this->getMock('Lunr\Network\Mail');
+        $this->mail   = $this->getMock('PHPMailer\PHPMailer\PHPMailer');
         $this->logger = $this->getMock('Psr\Log\LoggerInterface');
 
         $this->class = new EmailDispatcher($this->mail, $this->logger);
diff --git a/src/Lunr/Vortex/Email/Tests/EmailResponseTest.php b/src/Lunr/Vortex/Email/Tests/EmailResponseTest.php
index a04e09e47d73894e18410f7164ebabc774a16da4..b5d572bc86ff7a6de643958675727f0685070b63 100644
--- a/src/Lunr/Vortex/Email/Tests/EmailResponseTest.php
+++ b/src/Lunr/Vortex/Email/Tests/EmailResponseTest.php
@@ -42,13 +42,19 @@ abstract class EmailResponseTest extends LunrBaseTest
     {
         $this->logger = $this->getMock('Psr\Log\LoggerInterface');
 
-        $response = FALSE;
+        $response = $this->getMock('PHPMailer\PHPMailer\PHPMailer');
+
+        $response->expects($this->once())
+                 ->method('isError')
+                 ->will($this->returnValue(TRUE));
+
+        $response->ErrorInfo = 'ErrorInfo';
 
         $this->logger->expects($this->once())
                      ->method('warning')
                      ->with(
-                        $this->equalTo('Sending email notification to {endpoint} failed.'),
-                        $this->equalTo([ 'endpoint' => '12345679' ])
+                        $this->equalTo('Sending email notification to {endpoint} failed: {message}'),
+                        $this->equalTo([ 'endpoint' => '12345679', 'message' => 'ErrorInfo' ])
                      );
 
         $this->class      = new EmailResponse($response, $this->logger, '12345679');
@@ -64,7 +70,11 @@ abstract class EmailResponseTest extends LunrBaseTest
     {
         $this->logger = $this->getMock('Psr\Log\LoggerInterface');
 
-        $response = TRUE;
+        $response = $this->getMock('PHPMailer\PHPMailer\PHPMailer');
+
+        $response->expects($this->once())
+                 ->method('isError')
+                 ->will($this->returnValue(FALSE));
 
         $this->class      = new EmailResponse($response, $this->logger, '12345679');
         $this->reflection = new ReflectionClass('Lunr\Vortex\Email\EmailResponse');
diff --git a/support/setup.sh b/support/setup.sh
index 03b13d11bca8b2df4b26051fb36d6e62dacadd67..42d3ae34288676ad3d2269288812ebfc39bf37d9 100755
--- a/support/setup.sh
+++ b/support/setup.sh
@@ -13,6 +13,7 @@ fi
 PSRLOG="https://github.com/php-fig/log/archive/1.0.0.tar.gz"
 RESQUE="https://github.com/chrisboulton/php-resque/archive/1.2.tar.gz"
 APNSPHP="https://github.com/M2Mobi/ApnsPHP/archive/b9c04fdfdf63da714fbb06e4151d939e0e9fdccb.tar.gz"
+PHPMAILER="https://github.com/PHPMailer/PHPMailer/archive/v6.0.0rc2.tar.gz"
 
 if ! [ -e "$DESTDIR/Psr/Log" ]; then
   cd "$TMP"
@@ -46,6 +47,16 @@ if ! [ -e "$DESTDIR/ApnsPHP" ]; then
   cd -
 fi
 
+if ! [ -e "$DESTDIR/PHPMailer" ]; then
+  cd "$TMP"
+    wget --content-disposition "$PHPMAILER"
+    tar xvf PHPMailer-6.0.0rc2.tar.gz
+
+    mkdir -p "$DESTDIR/PHPMailer"
+    mv PHPMailer-6.0.0rc2/src "$DESTDIR/PHPMailer/PHPMailer"
+  cd -
+fi
+
 # cleanup
 rm -rf "$TMP"/*
 
diff --git a/tests/phpunit.xml b/tests/phpunit.xml
index 60ade48c5b590e9acee530eefb6c643234948e08..933b3dcfc4629412f72cc2659f5cdad3d5310497 100644
--- a/tests/phpunit.xml
+++ b/tests/phpunit.xml
@@ -329,7 +329,6 @@
             <file>../src/Lunr/Vortex/Email/Tests/EmailDispatcherBaseTest.php</file>
             <file>../src/Lunr/Vortex/Email/Tests/EmailDispatcherPushTest.php</file>
             <file>../src/Lunr/Vortex/Email/Tests/EmailDispatcherSetTest.php</file>
-            <file>../src/Lunr/Vortex/Email/Tests/EmailDispatcherTest.php</file>
             <file>../src/Lunr/Vortex/GCM/Tests/GCMDispatcherBaseTest.php</file>
             <file>../src/Lunr/Vortex/GCM/Tests/GCMDispatcherPushTest.php</file>
             <file>../src/Lunr/Vortex/GCM/Tests/GCMDispatcherSetTest.php</file>
