diff options
Diffstat (limited to 'public/system/library/mail/mail.php')
-rw-r--r-- | public/system/library/mail/mail.php | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/public/system/library/mail/mail.php b/public/system/library/mail/mail.php new file mode 100644 index 0000000..fe68a61 --- /dev/null +++ b/public/system/library/mail/mail.php @@ -0,0 +1,80 @@ +<?php +namespace Mail; +class Mail { + public function send() { + if (is_array($this->to)) { + $to = implode(',', $this->to); + } else { + $to = $this->to; + } + + $boundary = '----=_NextPart_' . md5(time()); + + $header = 'MIME-Version: 1.0' . PHP_EOL; + $header .= 'Date: ' . date('D, d M Y H:i:s O') . PHP_EOL; + $header .= 'From: =?UTF-8?B?' . base64_encode($this->sender) . '?= <' . $this->from . '>' . PHP_EOL; + + if (!$this->reply_to) { + $header .= 'Reply-To: =?UTF-8?B?' . base64_encode($this->sender) . '?= <' . $this->from . '>' . PHP_EOL; + } else { + $header .= 'Reply-To: =?UTF-8?B?' . base64_encode($this->reply_to) . '?= <' . $this->reply_to . '>' . PHP_EOL; + } + + $header .= 'Return-Path: ' . $this->from . PHP_EOL; + $header .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL; + $header .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"' . PHP_EOL . PHP_EOL; + + if (!$this->html) { + $message = '--' . $boundary . PHP_EOL; + $message .= 'Content-Type: text/plain; charset="utf-8"' . PHP_EOL; + $message .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL . PHP_EOL; + $message .= $this->text . PHP_EOL; + } else { + $message = '--' . $boundary . PHP_EOL; + $message .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '_alt"' . PHP_EOL . PHP_EOL; + $message .= '--' . $boundary . '_alt' . PHP_EOL; + $message .= 'Content-Type: text/plain; charset="utf-8"' . PHP_EOL; + $message .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL . PHP_EOL; + + if ($this->text) { + $message .= $this->text . PHP_EOL; + } else { + $message .= 'This is a HTML email and your email client software does not support HTML email!' . PHP_EOL; + } + + $message .= '--' . $boundary . '_alt' . PHP_EOL; + $message .= 'Content-Type: text/html; charset="utf-8"' . PHP_EOL; + $message .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL . PHP_EOL; + $message .= $this->html . PHP_EOL; + $message .= '--' . $boundary . '_alt--' . PHP_EOL; + } + + foreach ($this->attachments as $attachment) { + if (file_exists($attachment)) { + $handle = fopen($attachment, 'r'); + + $content = fread($handle, filesize($attachment)); + + fclose($handle); + + $message .= '--' . $boundary . PHP_EOL; + $message .= 'Content-Type: application/octet-stream; name="' . basename($attachment) . '"' . PHP_EOL; + $message .= 'Content-Transfer-Encoding: base64' . PHP_EOL; + $message .= 'Content-Disposition: attachment; filename="' . basename($attachment) . '"' . PHP_EOL; + $message .= 'Content-ID: <' . urlencode(basename($attachment)) . '>' . PHP_EOL; + $message .= 'X-Attachment-Id: ' . urlencode(basename($attachment)) . PHP_EOL . PHP_EOL; + $message .= chunk_split(base64_encode($content)); + } + } + + $message .= '--' . $boundary . '--' . PHP_EOL; + + ini_set('sendmail_from', $this->from); + + if ($this->parameter) { + mail($to, '=?UTF-8?B?' . base64_encode($this->subject) . '?=', $message, $header, $this->parameter); + } else { + mail($to, '=?UTF-8?B?' . base64_encode($this->subject) . '?=', $message, $header); + } + } +}
\ No newline at end of file |