PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.0.1
Booking for Appointments and Events Calendar – Amelia v2.0.1
2.4.9 2.4.8 2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Infrastructure / Services / Notification / MailgunService.php
ameliabooking / src / Infrastructure / Services / Notification Last commit date
MailerFactory.php 1 year ago MailgunService.php 8 months ago OutlookService.php 8 months ago PHPMailService.php 8 months ago SMTPService.php 8 months ago WpMailService.php 8 months ago
MailgunService.php
91 lines
1 <?php
2
3 /**
4 * @copyright © Melograno Ventures. All rights reserved.
5 * @licence See LICENCE.md for license details.
6 */
7
8 namespace AmeliaBooking\Infrastructure\Services\Notification;
9
10 use AmeliaBooking\Domain\Services\Notification\AbstractMailService;
11 use AmeliaBooking\Domain\Services\Notification\MailServiceInterface;
12 use Mailgun\Mailgun;
13
14 /**
15 * Class MailgunService
16 */
17 class MailgunService extends AbstractMailService implements MailServiceInterface
18 {
19 /** @var string */
20 private $apiKey;
21
22 /** @var string */
23 private $domain;
24
25 /** @var string */
26 private $endpoint;
27
28 /**
29 * MailgunService constructor.
30 *
31 * @param string $from
32 * @param string $fromName
33 * @param string $apiKey
34 * @param string $domain
35 * @param string $endpoint
36 */
37 public function __construct($from, $fromName, $apiKey, $domain, $endpoint, $replyTo)
38 {
39 parent::__construct($from, $fromName, $replyTo);
40 $this->apiKey = $apiKey;
41 $this->domain = $domain;
42 $this->endpoint = $endpoint;
43 }
44
45 /** @noinspection MoreThanThreeArgumentsInspection */
46 /**
47 * @param $to
48 * @param $subject
49 * @param $body
50 * @param array $bccEmails
51 * @param array $attachments
52 *
53 * @return mixed|void
54 * @SuppressWarnings(PHPMD)
55 */
56 public function send($to, $subject, $body, $bccEmails = [], $attachments = [])
57 {
58 $mgClient = $this->endpoint ? Mailgun::create($this->apiKey, $this->endpoint) : Mailgun::create($this->apiKey);
59
60 $mgArgs = [
61 'from' => "{$this->fromName} <{$this->from}>",
62 'to' => $to,
63 'subject' => $subject,
64 'html' => $body,
65 'attachment' => [],
66 'h:Reply-To' => !empty($this->replyTo) ? $this->replyTo : $this->from
67 ];
68
69 if ($bccEmails) {
70 $mgArgs['bcc'] = implode(', ', $bccEmails);
71 }
72
73 foreach ($attachments as $attachment) {
74 if (!empty($attachment['content'])) {
75 $extension = pathinfo($attachment['name'], PATHINFO_EXTENSION);
76 $fileName = pathinfo($attachment['name'], PATHINFO_FILENAME);
77 $tmpFile = tempnam(sys_get_temp_dir(), $fileName . '_');
78 if (
79 $tmpFile &&
80 file_put_contents($tmpFile, $attachment['content']) !== false &&
81 @rename($tmpFile, $tmpFile .= '.' . $extension) !== false
82 ) {
83 $mgArgs['attachment'][] = ['filePath' => $tmpFile, 'filename' => $tmpFile];
84 }
85 }
86 }
87
88 $mgClient->messages()->send($this->domain, $mgArgs);
89 }
90 }
91