-
Notifications
You must be signed in to change notification settings - Fork 139
Expand file tree
/
Copy pathSimpleQueueTransport.php
More file actions
83 lines (70 loc) · 2.26 KB
/
Copy pathSimpleQueueTransport.php
File metadata and controls
83 lines (70 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
declare(strict_types=1);
/**
* @author Mark Scherer
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
namespace Queue\Mailer\Transport;
use Cake\Mailer\AbstractTransport;
use Cake\Mailer\Message;
use Cake\ORM\Locator\LocatorAwareTrait;
use Queue\Model\Table\QueuedJobsTable;
/**
* Send mail using Queue plugin and Message settings.
* This is only recommended for non-templated emails.
*
* @method \Cake\ORM\Locator\TableLocator getTableLocator()
*/
class SimpleQueueTransport extends AbstractTransport {
use LocatorAwareTrait;
/**
* Send mail
*
* @param \Cake\Mailer\Message $message
*
* @return array<string, mixed>
*/
public function send(Message $message): array {
if (!empty($this->_config['queue'])) {
$this->_config = $this->_config['queue'] + $this->_config;
$message->setConfig((array)$this->_config['queue'] + ['queue' => []]);
unset($this->_config['queue']);
}
$settings = [
'from' => [$message->getFrom()],
'to' => [$message->getTo()],
'cc' => [$message->getCc()],
'bcc' => [$message->getBcc()],
'charset' => [$message->getCharset()],
'replyTo' => [$message->getReplyTo()],
'readReceipt' => [$message->getReadReceipt()],
'returnPath' => [$message->getReturnPath()],
'messageId' => [$message->getMessageId()],
'domain' => [$message->getDomain()],
'headers' => [$message->getHeaders()],
'headerCharset' => [$message->getHeaderCharset()],
'emailFormat' => [$message->getEmailFormat()],
'subject' => [$message->getOriginalSubject()],
'transport' => [$this->_config['transport']],
'attachments' => [$message->getAttachments()],
];
foreach ($settings as $setting => $value) {
if ($value[0] === null || $value[0] === []) {
unset($settings[$setting]);
}
}
$QueuedJobs = $this->getQueuedJobsModel();
$result = $QueuedJobs->createJob('Queue.Email', ['settings' => $settings]);
$result->headers = $message->getHeadersString();
$result->message = $message->getBodyString();
return $result->toArray();
}
/**
* @return \Queue\Model\Table\QueuedJobsTable
*/
protected function getQueuedJobsModel(): QueuedJobsTable {
/** @var \Queue\Model\Table\QueuedJobsTable $table */
$table = $this->getTableLocator()->get('Queue.QueuedJobs');
return $table;
}
}