1: <?php
2:
3: /**
4: * Avisota newsletter and mailing system
5: *
6: * PHP Version 5.3
7: *
8: * @copyright bit3 UG 2013
9: * @author Tristan Lins <tristan.lins@bit3.de>
10: * @package avisota-core
11: * @license LGPL-3.0+
12: * @link http://avisota.org
13: */
14:
15: namespace Avisota\Transport;
16:
17: use Avisota\Message\MessageInterface;
18: use Avisota\Renderer\MessageRendererInterface;
19:
20: /**
21: * Transport using a pre configured swift transport.
22: *
23: * @package avisota-core
24: */
25: class SwiftTransport extends AbstractTransport
26: {
27: /**
28: * @var \Swift_Mailer|null
29: */
30: protected $swiftMailer;
31:
32: public function __construct(\Swift_Mailer $swiftMailer, MessageRendererInterface $renderer)
33: {
34: $this->setSwiftMailer($swiftMailer);
35: $this->setRenderer($renderer);
36: }
37:
38: /**
39: * @param \Swift_Mailer $swiftMailer
40: */
41: public function setSwiftMailer(\Swift_Mailer $swiftMailer)
42: {
43: $this->swiftMailer = $swiftMailer;
44: return $this;
45: }
46:
47: /**
48: * @return \Swift_Mailer
49: */
50: public function getSwiftMailer()
51: {
52: return $this->swiftMailer;
53: }
54:
55: /**
56: * {@inheritdoc}
57: */
58: public function initialise()
59: {
60: }
61:
62: /**
63: * {@inheritdoc}
64: */
65: public function flush()
66: {
67: }
68:
69: /**
70: * {@inheritdoc}
71: */
72: public function send(MessageInterface $message)
73: {
74: $email = $this->renderer->renderMessage($message);
75:
76: $failedRecipients = array();
77: $successfullySendCount = $this->swiftMailer->send($email, $failedRecipients);
78:
79: return new TransportStatus($message, $successfullySendCount, $failedRecipients);
80: }
81: }
82: