/
TestMailer.php
86 lines (72 loc) · 2.18 KB
/
TestMailer.php
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
<?php
/**
* @package sapphire
* @subpackage email
*/
class TestMailer extends Mailer {
protected $emailsSent = array();
/**
* Send a plain-text email.
* TestMailer will merely record that the email was asked to be sent, without sending anything.
*/
function sendPlain($to, $from, $subject, $plainContent, $attachedFiles = false, $customHeaders = false) {
$this->emailsSent[] = array(
'type' => 'plain',
'to' => $to,
'from' => $from,
'subject' => $subject,
'content' => $plainContent,
'plainContent' => $plainContent,
'attachedFiles' => $attachedFiles,
'customHeaders' => $customHeaders,
);
return true;
}
/**
* Send a multi-part HTML email
* TestMailer will merely record that the email was asked to be sent, without sending anything.
*/
function sendHTML($to, $from, $subject, $htmlContent, $attachedFiles = false, $customHeaders = false, $plainContent = false, $inlineImages = false) {
$this->emailsSent[] = array(
'type' => 'html',
'to' => $to,
'from' => $from,
'subject' => $subject,
'content' => $htmlContent,
'plainContent' => $plainContent,
'htmlContent' => $htmlContent,
'attachedFiles' => $attachedFiles,
'customHeaders' => $customHeaders,
'inlineImages' => $inlineImages,
);
return true;
}
/**
* Clear the log of emails sent
*/
function clearEmails() {
$this->emailsSent = array();
}
/**
* Search for an email that was sent.
* All of the parameters can either be a string, or, if they start with "/", a PREG-compatible regular expression.
* @param $to
* @param $from
* @param $subject
* @param $content
* @return An array containing the keys: 'type','to','from','subject','content', 'plainContent','attachedFiles','customHeaders','htmlContent',inlineImages'
*/
function findEmail($to, $from = null, $subject = null, $content = null) {
foreach($this->emailsSent as $email) {
$matched = true;
foreach(array('to','from','subject','content') as $field) {
if($value = $$field) {
if($value[0] == '/') $matched = preg_match($value, $email[$field]);
else $matched = ($value == $email[$field]);
if(!$matched) break;
}
}
if($matched) return $email;
}
}
}