boundary = md5(uniqid(time())); $this->header = "From: $name <$mail>\n"; $bcc = get_company_pref('bcc_email'); if ($bcc) $this->bcc[] = $bcc; } function to($mail) { $this->to[] = $mail; } function cc($mail) { $this->cc[] = $mail; } function bcc($mail) { $this->bcc[] = $mail; } function attachment($file, $filename=null) { if (!isset($filename)) $filename = basename($file); $this->attachment[$filename] = $file; } function subject($subject) { $this->subject = $subject; } function text($text) { $this->body = "--$this->boundary\n"; $this->body .= "Content-Type: text/plain; charset=\"{$this->charset}\"\n"; $this->body .= "Content-Transfer-Encoding: 8bit\n\n"; $this->body .= $text."\n"; } function html($html) { $this->body = "--$this->boundary\n"; $this->body .= "Content-Type: text/html; charset=\"{$this->charset}\"\n"; $this->body .= "Content-Transfer-Encoding: quoted-printable\n\n"; $this->body .= "\n".$html."\n\n"; } function mime_type($filename) { $file = basename($filename, '.zip'); if ($filename == $file . '.zip') return 'application/x-zip-compressed'; $file = basename($filename, '.pdf'); if ($filename == $file . '.pdf') return 'application/pdf'; $file = basename($filename, '.xls'); if ($filename == $file . '.xls') return 'application/vnd.ms-excel'; $file = basename($filename, '.csv'); if ($filename == $file . '.csv') return 'application/vnd.ms-excel'; $file = basename($filename, '.tar'); if ($filename == $file . '.tar') return 'application/x-tar'; $file = basename($filename, '.tar.gz'); if ($filename == $file . '.tar.gz') return 'application/x-tar-gz'; $file = basename($filename, '.tgz'); if ($filename == $file . '.tgz') return 'application/x-tar-gz'; $file = basename($filename, '.gz'); if ($filename == $file . '.gz') return 'application/x-gzip'; $file = basename($filename, '.html'); if ($filename == $file . '.html') return 'text/html'; return 'application/unknown'; } function send() { // Add CC Recipients if (!empty($this->cc)) $this->header .= "Cc: " . implode(", ", $this->cc) . "\n" ; // Add BCC Recipients if (!empty($this->bcc)) $this->header .= "Bcc: " . implode(", ", $this->bcc) . "\n" ; $this->header .= "Content-Type: multipart/mixed;\n boundary=\"$this->boundary\"\n"; // Add Attachments if (!empty($this->attachment)) { foreach ($this->attachment as $filename => $file) { $file = fread(fopen($file, "r"), filesize($file)); $this->body .= "--".$this->boundary."\n"; $this->body .= "Content-Type: " .$this->mime_type($file). "; name=\"".$filename."\"\n"; $this->body .= "Content-Transfer-Encoding: base64\n"; $this->body .= "Content-Disposition: attachment; filename=\"".$filename."\"\n\n"; $this->body .= chunk_split(base64_encode($file),"72","\n"); $file = ""; } } $this->body .= "--".$this->boundary."--\n"; $ret = 0; foreach($this->to as $mail) { if (mail($mail, $this->subject, $this->body, $this->header, $this->add_params)) $ret++; } return $ret; } }