| Code Coverage
| Classes and Traits | Functions and Methods | Lines
Total |  | 0.00% | 0 / 1 |  | 23.08% | 3 / 13 | CRAP |  | 58.70% | 27 / 46
LoggerAppenderMailEvent |  | 0.00% | 0 / 1 |  | 23.08% | 3 / 13 | 52.08 |  | 58.70% | 27 / 46
activateOptions() |  | 0.00% | 0 / 1 | 4.77 |  | 63.64% | 7 / 11
append(LoggerLoggingEvent $event) |  | 0.00% | 0 / 1 | 6.40 |  | 77.78% | 14 / 18
setFrom($from) |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 2 / 2
getFrom() |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 1
setPort($port) |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 2
getPort() |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 1
setSmtpHost($smtpHost) |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 2
getSmtpHost() |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 1
setSubject($subject) |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 2
getSubject() |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 1
setTo($to) |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 2 / 2
getTo() |  | 0.00% | 0 / 1 | 2 |  | 0.00% | 0 / 1
setDry($dry) |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 2 / 2

1 | <?php
2 | /**
3 | * Licensed to the Apache Software Foundation (ASF) under one or more
4 | * contributor license agreements. See the NOTICE file distributed with
5 | * this work for additional information regarding copyright ownership.
6 | * The ASF licenses this file to You under the Apache License, Version 2.0
7 | * (the "License"); you may not use this file except in compliance with
8 | * the License. You may obtain a copy of the License at
9 | *
10 | * http://www.apache.org/licenses/LICENSE-2.0
11 | *
12 | * Unless required by applicable law or agreed to in writing, software
13 | * distributed under the License is distributed on an "AS IS" BASIS,
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | * See the License for the specific language governing permissions and
16 | * limitations under the License.
17 | */
18 |
19 | /**
20 | * LoggerAppenderMailEvent appends individual log events via email.
21 | *
22 | * This appender is similar to LoggerAppenderMail, except that it sends each
23 | * each log event in an individual email message at the time when it occurs.
24 | *
25 | * This appender uses a layout.
26 | *
27 | * ## Configurable parameters: ##
28 | *
29 | * - **to** - Email address(es) to which the log will be sent. Multiple email
30 | * addresses may be specified by separating them with a comma.
31 | * - **from** - Email address which will be used in the From field.
32 | * - **subject** - Subject of the email message.
33 | * - **smtpHost** - Used to override the SMTP server. Only works on Windows.
34 | * - **port** - Used to override the default SMTP server port. Only works on
35 | * Windows.
36 | *
37 | * @version $Revision: 1343601 $
38 | * @package log4php
39 | * @subpackage appenders
40 | * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
41 | * @link http://logging.apache.org/log4php/docs/appenders/mail-event.html Appender documentation
42 | */
43 | class LoggerAppenderMailEvent extends LoggerAppender {
44 |
45 | /**
46 | * Email address to put in From field of the email.
47 | * @var string
48 | */
49 | protected $from;
50 |
51 | /**
52 | * Mail server port (widnows only).
53 | * @var integer
54 | */
55 | protected $port = 25;
56 |
57 | /**
58 | * Mail server hostname (windows only).
59 | * @var string
60 | */
61 | protected $smtpHost;
62 |
63 | /**
64 | * The subject of the email.
65 | * @var string
66 | */
67 | protected $subject = 'Log4php Report';
68 |
69 | /**
70 | * One or more comma separated email addresses to which to send the email.
71 | * @var string
72 | */
73 | protected $to = null;
74 |
75 | /**
76 | * Indiciates whether this appender should run in dry mode.
77 | * @deprecated
78 | * @var boolean
79 | */
80 | protected $dry = false;
81 |
82 | public function activateOptions() {
83 | if (empty($this->to)) {
84 | $this->warn("Required parameter 'to' not set. Closing appender.");
85 | $this->close = true;
86 | return;
87 | }
88 |
89 | $sendmail_from = ini_get('sendmail_from');
90 | if (empty($this->from) and empty($sendmail_from)) {
91 | $this->warn("Required parameter 'from' not set. Closing appender.");
92 | $this->close = true;
93 | return;
94 | }
95 |
96 | $this->closed = false;
97 | }
98 |
99 | public function append(LoggerLoggingEvent $event) {
100 | $smtpHost = $this->smtpHost;
101 | $prevSmtpHost = ini_get('SMTP');
102 | if(!empty($smtpHost)) {
103 | ini_set('SMTP', $smtpHost);
104 | }
105 |
106 | $smtpPort = $this->port;
107 | $prevSmtpPort= ini_get('smtp_port');
108 | if($smtpPort > 0 and $smtpPort < 65535) {
109 | ini_set('smtp_port', $smtpPort);
110 | }
111 |
112 | // On unix only sendmail_path, which is PHP_INI_SYSTEM i.e. not changeable here, is used.
113 |
114 | $addHeader = empty($this->from) ? '' : "From: {$this->from}\r\n";
115 |
116 | if(!$this->dry) {
117 | $result = mail($this->to, $this->subject, $this->layout->getHeader() . $this->layout->format($event) . $this->layout->getFooter($event), $addHeader);
118 | } else {
119 | echo "DRY MODE OF MAIL APP.: Send mail to: ".$this->to." with additional headers '".trim($addHeader)."' and content: ".$this->layout->format($event);
120 | }
121 |
122 | ini_set('SMTP', $prevSmtpHost);
123 | ini_set('smtp_port', $prevSmtpPort);
124 | }
125 |
126 | /** Sets the 'from' parameter. */
127 | public function setFrom($from) {
128 | $this->setString('from', $from);
129 | }
130 |
131 | /** Returns the 'from' parameter. */
132 | public function getFrom() {
133 | return $this->from;
134 | }
135 |
136 | /** Sets the 'port' parameter. */
137 | public function setPort($port) {
138 | $this->setPositiveInteger('port', $port);
139 | }
140 |
141 | /** Returns the 'port' parameter. */
142 | public function getPort() {
143 | return $this->port;
144 | }
145 |
146 | /** Sets the 'smtpHost' parameter. */
147 | public function setSmtpHost($smtpHost) {
148 | $this->setString('smtpHost', $smtpHost);
149 | }
150 |
151 | /** Returns the 'smtpHost' parameter. */
152 | public function getSmtpHost() {
153 | return $this->smtpHost;
154 | }
155 |
156 | /** Sets the 'subject' parameter. */
157 | public function setSubject($subject) {
158 | $this->setString('subject', $subject);
159 | }
160 |
161 | /** Returns the 'subject' parameter. */
162 | public function getSubject() {
163 | return $this->subject;
164 | }
165 |
166 | /** Sets the 'to' parameter. */
167 | public function setTo($to) {
168 | $this->setString('to', $to);
169 | }
170 |
171 | /** Returns the 'to' parameter. */
172 | public function getTo() {
173 | return $this->to;
174 | }
175 |
176 | /** Enables or disables dry mode. */
177 | public function setDry($dry) {
178 | $this->setBoolean('dry', $dry);
179 | }
180 | }