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) { $this->attachment[] = $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 $max = count($this->attachment); if ($max > 0) { for ($i = 0; $i < $max; $i++) { $file = fread(fopen($this->attachment[$i], "r"), filesize($this->attachment[$i])); $this->body .= "--".$this->boundary."\n"; $this->body .= "Content-Type: " .$this->mime_type(basename($this->attachment[$i])). "; name=\"".basename($this->attachment[$i])."\"\n"; $this->body .= "Content-Transfer-Encoding: base64\n"; $this->body .= "Content-Disposition: attachment; filename=\"".basename($this->attachment[$i])."\"\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; } }