forked from lorenzo/cakephp-email-queue
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathPreviewShell.php
More file actions
executable file
·96 lines (82 loc) · 2.37 KB
/
Copy pathPreviewShell.php
File metadata and controls
executable file
·96 lines (82 loc) · 2.37 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
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
namespace EmailQueue\Shell;
use Cake\Console\Shell;
use Cake\Core\Configure;
use Cake\Mailer\Email;
use Cake\ORM\TableRegistry;
use EmailQueue\Model\Table\EmailQueueTable;
class PreviewShell extends Shell
{
/**
* Main
*
* @return bool|int|null|void
*/
public function main()
{
Configure::write('App.baseUrl', '/');
$conditions = [];
if ($this->args) {
$conditions['id IN'] = $this->args;
}
$emailQueue = TableRegistry::get('EmailQueue', ['className' => EmailQueueTable::class]);
$emails = $emailQueue->find()->where($conditions)->toList();
if (!$emails) {
$this->out('No emails found');
return;
}
$this->clear();
foreach ($emails as $i => $email) {
if ($i) {
$this->in('Hit a key to continue');
$this->clear();
}
$this->out('Email :' . $email['EmailQueue']['id']);
$this->preview($email);
}
}
/**
* Preview email
*
* @param array $e email data
* @return void
*/
public function preview($e)
{
$configName = $e['config'];
$template = $e['template'];
$layout = $e['layout'];
$headers = empty($e['headers']) ? [] : (array)$e['headers'];
$theme = empty($e['theme']) ? '' : (string)$e['theme'];
$email = new Email($configName);
if (!empty($e['attachments'])) {
$email->setAttachments($e['attachments']);
}
$email->setTransport('Debug')
->setTo($e['email'])
->setSubject($e['subject'])
->setEmailFormat($e['format'])
->addHeaders($headers)
->setMessageId(false)
->setReturnPath($email->getFrom())
->setViewVars($e['template_vars']);
$email->viewBuilder()
->setTheme($theme)
->setTemplate($template)
->setLayout($layout);
$return = $email->send();
$this->out('Content:');
$this->hr();
$this->out($return['message']);
$this->hr();
$this->out('Headers:');
$this->hr();
$this->out($return['headers']);
$this->hr();
$this->out('Data:');
$this->hr();
debug($e['template_vars']);
$this->hr();
$this->out();
}
}