Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1433069
NativeMailerHandler.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
NativeMailerHandler.php
View Options
<?php
declare
(
strict_types
=
1
);
/*
* This file is part of the Monolog package.
*
* (c) Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace
Monolog\Handler
;
use
Monolog\Logger
;
use
Monolog\Formatter\LineFormatter
;
/**
* NativeMailerHandler uses the mail() function to send the emails
*
* @author Christophe Coevoet <stof@notk.org>
* @author Mark Garrett <mark@moderndeveloperllc.com>
*/
class
NativeMailerHandler
extends
MailHandler
{
/**
* The email addresses to which the message will be sent
* @var string[]
*/
protected
$to
;
/**
* The subject of the email
* @var string
*/
protected
$subject
;
/**
* Optional headers for the message
* @var string[]
*/
protected
$headers
=
[];
/**
* Optional parameters for the message
* @var string[]
*/
protected
$parameters
=
[];
/**
* The wordwrap length for the message
* @var int
*/
protected
$maxColumnWidth
;
/**
* The Content-type for the message
* @var string|null
*/
protected
$contentType
;
/**
* The encoding for the message
* @var string
*/
protected
$encoding
=
'utf-8'
;
/**
* @param string|string[] $to The receiver of the mail
* @param string $subject The subject of the mail
* @param string $from The sender of the mail
* @param int $maxColumnWidth The maximum column width that the message lines will have
*/
public
function
__construct
(
$to
,
string
$subject
,
string
$from
,
$level
=
Logger
::
ERROR
,
bool
$bubble
=
true
,
int
$maxColumnWidth
=
70
)
{
parent
::
__construct
(
$level
,
$bubble
);
$this
->
to
=
(
array
)
$to
;
$this
->
subject
=
$subject
;
$this
->
addHeader
(
sprintf
(
'From: %s'
,
$from
));
$this
->
maxColumnWidth
=
$maxColumnWidth
;
}
/**
* Add headers to the message
*
* @param string|string[] $headers Custom added headers
*/
public
function
addHeader
(
$headers
):
self
{
foreach
((
array
)
$headers
as
$header
)
{
if
(
strpos
(
$header
,
"
\n
"
)
!==
false
||
strpos
(
$header
,
"
\r
"
)
!==
false
)
{
throw
new
\InvalidArgumentException
(
'Headers can not contain newline characters for security reasons'
);
}
$this
->
headers
[]
=
$header
;
}
return
$this
;
}
/**
* Add parameters to the message
*
* @param string|string[] $parameters Custom added parameters
*/
public
function
addParameter
(
$parameters
):
self
{
$this
->
parameters
=
array_merge
(
$this
->
parameters
,
(
array
)
$parameters
);
return
$this
;
}
/**
* {@inheritDoc}
*/
protected
function
send
(
string
$content
,
array
$records
):
void
{
$contentType
=
$this
->
getContentType
()
?:
(
$this
->
isHtmlBody
(
$content
)
?
'text/html'
:
'text/plain'
);
if
(
$contentType
!==
'text/html'
)
{
$content
=
wordwrap
(
$content
,
$this
->
maxColumnWidth
);
}
$headers
=
ltrim
(
implode
(
"
\r\n
"
,
$this
->
headers
)
.
"
\r\n
"
,
"
\r\n
"
);
$headers
.=
'Content-type: '
.
$contentType
.
'; charset='
.
$this
->
getEncoding
()
.
"
\r\n
"
;
if
(
$contentType
===
'text/html'
&&
false
===
strpos
(
$headers
,
'MIME-Version:'
))
{
$headers
.=
'MIME-Version: 1.0'
.
"
\r\n
"
;
}
$subject
=
$this
->
subject
;
if
(
$records
)
{
$subjectFormatter
=
new
LineFormatter
(
$this
->
subject
);
$subject
=
$subjectFormatter
->
format
(
$this
->
getHighestRecord
(
$records
));
}
$parameters
=
implode
(
' '
,
$this
->
parameters
);
foreach
(
$this
->
to
as
$to
)
{
mail
(
$to
,
$subject
,
$content
,
$headers
,
$parameters
);
}
}
public
function
getContentType
():
?
string
{
return
$this
->
contentType
;
}
public
function
getEncoding
():
string
{
return
$this
->
encoding
;
}
/**
* @param string $contentType The content type of the email - Defaults to text/plain. Use text/html for HTML messages.
*/
public
function
setContentType
(
string
$contentType
):
self
{
if
(
strpos
(
$contentType
,
"
\n
"
)
!==
false
||
strpos
(
$contentType
,
"
\r
"
)
!==
false
)
{
throw
new
\InvalidArgumentException
(
'The content type can not contain newline characters to prevent email header injection'
);
}
$this
->
contentType
=
$contentType
;
return
$this
;
}
public
function
setEncoding
(
string
$encoding
):
self
{
if
(
strpos
(
$encoding
,
"
\n
"
)
!==
false
||
strpos
(
$encoding
,
"
\r
"
)
!==
false
)
{
throw
new
\InvalidArgumentException
(
'The encoding can not contain newline characters to prevent email header injection'
);
}
$this
->
encoding
=
$encoding
;
return
$this
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 22:37 (1 h, 31 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
af/af/1db6e39b86166d43ae3a827ad4c6
Default Alt Text
NativeMailerHandler.php (4 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment