aboutsummaryrefslogtreecommitdiffstats
path: root/public/system/library/mail/mail.php
diff options
context:
space:
mode:
Diffstat (limited to 'public/system/library/mail/mail.php')
-rw-r--r--public/system/library/mail/mail.php80
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