runff 1.0 commit
This commit is contained in:
122
lib/SimpleSAML/XHTML/EMail.php
Executable file
122
lib/SimpleSAML/XHTML/EMail.php
Executable file
@@ -0,0 +1,122 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* A minimalistic Emailer class. Creates and sends HTML emails.
|
||||
*
|
||||
* @author Andreas kre Solberg, UNINETT AS. <andreas.solberg@uninett.no>
|
||||
* @package SimpleSAMLphp
|
||||
*/
|
||||
class SimpleSAML_XHTML_EMail
|
||||
{
|
||||
private $to = null;
|
||||
private $cc = null;
|
||||
private $body = null;
|
||||
private $from = null;
|
||||
private $replyto = null;
|
||||
private $subject = null;
|
||||
private $headers = array();
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct($to, $subject, $from = null, $cc = null, $replyto = null)
|
||||
{
|
||||
$this->to = $to;
|
||||
$this->cc = $cc;
|
||||
$this->from = $from;
|
||||
$this->replyto = $replyto;
|
||||
$this->subject = $subject;
|
||||
}
|
||||
|
||||
/*
|
||||
* @param string $body
|
||||
* @return void
|
||||
*/
|
||||
public function setBody($body)
|
||||
{
|
||||
$this->body = $body;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @param string $body
|
||||
* @return void
|
||||
*/
|
||||
private function getHTML($body)
|
||||
{
|
||||
return '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<title>SimpleSAMLphp Email report</title>
|
||||
<style type="text/css">
|
||||
pre, div.box {
|
||||
margin: .4em 2em .4em 1em;
|
||||
padding: 4px;
|
||||
|
||||
}
|
||||
pre {
|
||||
background: #eee;
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container" style="background: #fafafa; border: 1px solid #eee; margin: 2em; padding: .6em;">
|
||||
' . $body . '
|
||||
</div>
|
||||
</body>
|
||||
</html>';
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @return void
|
||||
*/
|
||||
public function send()
|
||||
{
|
||||
if ($this->to === null) {
|
||||
throw new Exception('EMail field [to] is required and not set.');
|
||||
} elseif ($this->subject === null) {
|
||||
throw new Exception('EMail field [subject] is required and not set.');
|
||||
} elseif ($this->body === null) {
|
||||
throw new Exception('EMail field [body] is required and not set.');
|
||||
}
|
||||
|
||||
$random_hash = bin2hex(openssl_random_pseudo_bytes(16));
|
||||
|
||||
if (isset($this->from)) {
|
||||
$this->headers[]= 'From: ' . $this->from;
|
||||
}
|
||||
if (isset($this->replyto)) {
|
||||
$this->headers[]= 'Reply-To: ' . $this->replyto;
|
||||
}
|
||||
|
||||
$this->headers[] = 'Content-Type: multipart/alternative; boundary="simplesamlphp-' . $random_hash . '"';
|
||||
|
||||
$message = '
|
||||
--simplesamlphp-' . $random_hash . '
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
' . strip_tags(html_entity_decode($this->body)) . '
|
||||
|
||||
--simplesamlphp-' . $random_hash . '
|
||||
Content-Type: text/html; charset="utf-8"
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
' . $this->getHTML($this->body) . '
|
||||
|
||||
--simplesamlphp-' . $random_hash . '--
|
||||
';
|
||||
$headers = implode("\n", $this->headers);
|
||||
|
||||
$mail_sent = @mail($this->to, $this->subject, $message, $headers);
|
||||
SimpleSAML\Logger::debug('Email: Sending e-mail to [' . $this->to . '] : ' . ($mail_sent ? 'OK' : 'Failed'));
|
||||
if (!$mail_sent) {
|
||||
throw new Exception('Error when sending e-mail');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user