MailService::setTransport()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php declare(strict_types=1);
2
3
namespace Bone\Mail\Service;
4
5
use Bone\View\ViewEngine;
6
use Bone\Server\SiteConfig;
7
use Bone\Server\SiteConfigAwareInterface;
8
use Bone\Server\Traits\HasSiteConfigTrait;
9
use Bone\View\Traits\HasViewTrait;
10
use Bone\View\ViewAwareInterface;
11
use Bone\Mail\EmailMessage;
12
use Laminas\Mail\Transport\TransportInterface;
13
use Laminas\Mime\Message;
14
use Laminas\Mime\Part;
15
16
class MailService implements SiteConfigAwareInterface, ViewAwareInterface
17
{
18
19
    use HasSiteConfigTrait;
20
    use HasViewTrait;
21
22
    /** @var TransportInterface $transport */
23
    private $transport;
24
25
    /**
26
     * @param TransportInterface $transport
27
     */
28 2
    public function setTransport(TransportInterface $transport): void
29
    {
30 2
        $this->transport = $transport;
31
    }
32
33
    /**
34
     * @param string $template
35
     * @param array $data
36
     * @return string
37
     */
38 1
    private function renderEmail(string $template, array $data): string
39
    {
40 1
        return $this->view->render($template, $data);
41
    }
42
43
    /**
44
     * @param EmailMessage $message
45
     * @return bool
46
     */
47 1
    public function sendEmail(EmailMessage $message): bool
48
    {
49 1
        $config = $this->getSiteConfig();
50 1
        $message->setFrom($config->getServerEmail(), $config->getCompany());
51 1
        $body = $this->renderEmail($message->getTemplate(), $message->getViewData());
52 1
        $msg = new Part($body);
53 1
        $msg->type = 'text/html';
54 1
        $mime = new Message();
55 1
        $mime->setParts([$msg]);
56 1
        $message->setBody($mime);
57 1
        $this->transport->send($message);
58
59 1
        return true;
60
    }
61
}
62