Moved mail sending to new class.
This commit is contained in:
parent
0ce5d7cd42
commit
d8f8c7c381
24
index.php
24
index.php
@ -113,27 +113,9 @@ if (!$tpl_done && isset($_SESSION['access_token']) && $_SESSION['access_token'])
|
|||||||
$data['email_date'] = date('r');
|
$data['email_date'] = date('r');
|
||||||
$data = array_merge($data, $fields);
|
$data = array_merge($data, $fields);
|
||||||
$mo->addTemplateVars($data);
|
$mo->addTemplateVars($data);
|
||||||
|
$mo->setSubject('[FRS] ' . $data['action_uc'] . ' Reservation');
|
||||||
$mail_html = $mo->getRenderedOutput();
|
$mo->addRecipient($data['user']['email'], $data['user']['name_first'] . ' ' . $data['user']['name_last']);
|
||||||
list($headers, $mailbody) = preg_split('/\r?\n\r?\n/', $mail_html, 2);
|
$mail_sent = $mo->send();
|
||||||
|
|
||||||
echo '<hr/>'.$headers.'<hr/>'.$mailbody;
|
|
||||||
$header_lines = preg_split('/\r?\n/', $headers);
|
|
||||||
$header_filtered = '';
|
|
||||||
$recipient = $data['user']['name_first'] . ' ' . $data['user']['name_last'] . ' <' . $data['user']['email'] . '>';
|
|
||||||
$subject = '[FRS] ' . $data['action_uc'] . ' Reservation';
|
|
||||||
foreach ($header_lines as $header_line) {
|
|
||||||
list($key, $value) = preg_split('/: /', $header_line, 2);
|
|
||||||
if (in_array(strtolower($key), array('subject', 'to'))) {
|
|
||||||
// Skip Subject and To headers as they're added by PHP
|
|
||||||
if (strtolower($key) == 'subject') {
|
|
||||||
$subject = $value;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$header_filtered .= $header_line . "\r\n";
|
|
||||||
}
|
|
||||||
$mail_sent = mail($recipient, $subject, $mailbody, $header_filtered);
|
|
||||||
if ($mail_sent) {
|
if ($mail_sent) {
|
||||||
echo 'Mail sent successfully.';
|
echo 'Mail sent successfully.';
|
||||||
} else {
|
} else {
|
||||||
|
@ -6,4 +6,63 @@ use \Frs\Output\GenericOutput;
|
|||||||
|
|
||||||
class MailOutput extends GenericOutput
|
class MailOutput extends GenericOutput
|
||||||
{
|
{
|
||||||
|
private $recipients = array();
|
||||||
|
private $subject = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a recipient to the list.
|
||||||
|
*
|
||||||
|
* @param string $address The email address to add.
|
||||||
|
* @param string $name The name to display.
|
||||||
|
*/
|
||||||
|
public function addRecipient($address, $name = '')
|
||||||
|
{
|
||||||
|
// TODO: Check $address for validity
|
||||||
|
$fullAddress = '<' . $address . '>';
|
||||||
|
if (!empty($name)) {
|
||||||
|
$fullAddress = $name . ' ' . $fullAddress;
|
||||||
|
}
|
||||||
|
$this->recipients[] = $fullAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the default subject for the mail. Might be
|
||||||
|
* overwritten by subject line from template.
|
||||||
|
*
|
||||||
|
* @param string $newSubject Subject to use.
|
||||||
|
*/
|
||||||
|
public function setSubject($newSubject)
|
||||||
|
{
|
||||||
|
$this->subject = $newSubject;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends the prepared mail
|
||||||
|
*
|
||||||
|
* @return bool TRUE if mail was sent, FALSE if not.
|
||||||
|
*/
|
||||||
|
public function send()
|
||||||
|
{
|
||||||
|
$mail_html = $this->getRenderedOutput(); // contains headers + body
|
||||||
|
list($headers, $mailbody) = preg_split('/\r?\n\r?\n/', $mail_html, 2);
|
||||||
|
|
||||||
|
$header_lines = preg_split('/\r?\n/', $headers);
|
||||||
|
$header_filtered = '';
|
||||||
|
|
||||||
|
foreach ($header_lines as $header_line) {
|
||||||
|
list($key, $value) = preg_split('/: /', $header_line, 2);
|
||||||
|
if (in_array(strtolower($key), array('subject', 'to'))) {
|
||||||
|
// Skip Subject and To headers as they're added by PHP
|
||||||
|
if (strtolower($key) == 'subject') {
|
||||||
|
$this->setSubject($value);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$header_filtered .= $header_line . "\r\n";
|
||||||
|
}
|
||||||
|
$recipients = implode(', ', $this->recipients);
|
||||||
|
// TODO: Check if any recipients in the first place
|
||||||
|
$mail_sent = mail($recipients, $this->subject, $mailbody, $header_filtered);
|
||||||
|
return $mail_sent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user