class html_mime_mail { var $headers; var $multipart; var $mime; var $html; var $parts = array(); function html_mime_mail($headers="") { $this->headers=$headers; } function add_html($html="") { $this->html.=$html; } function build_html($orig_boundary,$kod) { $this->multipart.="--$orig_boundary\n"; if ($kod=='w' || $kod=='win' || $kod=='windows-1251') $kod='windows-1251'; else $kod='utf-8'; $this->multipart.="Content-Type: text/html; charset=$kod\n"; $this->multipart.="Content-Transfer-Encoding: Quot-Printed\n\n"; $this->multipart.="$this->html\n\n"; } function add_attachment($path="", $fname = "", $c_type="application/octet-stream") { if (!file_exists($path)) { //print "File $fname dosn't exist."; return; } if (!$fname) { $fname = explode("/", $path); $fname = $fname[count($fname) - 1]; } $fp=fopen($path,"r"); if (!$fp) { print "File $fname coudn't be read."; return; } $file=fread($fp, filesize($path)); fclose($fp); $this->parts[]=array("body"=>$file, "name"=>$fname,"c_type"=>$c_type); } function build_part($i) { $message_part=""; $message_part.="Content-Type: ".$this->parts[$i]["c_type"]; if ($this->parts[$i]["name"]!="") $message_part.="; name = \"".$this->parts[$i]["name"]."\"\n"; else $message_part.="\n"; $message_part.="Content-Transfer-Encoding: base64\n"; $message_part.="Content-Disposition: attachment; filename = \"". $this->parts[$i]["name"]."\"\n\n"; $message_part.=chunk_split(base64_encode($this->parts[$i]["body"]))."\n"; return $message_part; } function build_message($kod) { $boundary="=_".md5(uniqid(time())); $this->headers.="MIME-Version: 1.0\n"; $this->headers.="Content-Type: multipart/mixed;\n boundary=\"$boundary\";\n charset=windows-1251;\n"; $this->multipart=""; $this->multipart.="This is a multi-part message in MIME format.\n\n"; $this->build_html($boundary,$kod); for ($i=(count($this->parts)-1); $i>=0; $i--) $this->multipart.="--$boundary\n".$this->build_part($i); $this->mime = "$this->multipart--$boundary--\n"; } function send($server, $to, $from, $subject="") { $to_arr = explode(';', $to); $to_mail = explode(',', $to_arr[0]); $to_depart = $to_arr[1]; foreach ($to_mail as $to1) { $to1 = trim($to1); $headers="To: <$to1>\nFrom: $from\nSubject: $subject\nX-Mailer: The Mouse!\n"; $fp = fsockopen($server, 25, $errno, $errstr, 30); if (!$fp) { //echo("Server $server. Connection failed: $errno, $errstr"); return false; } //echo "RCPT TO: ".$to_depart." <$to1>\n"; fputs($fp,"HELO $server\n")or die("AAAAS"); fputs($fp,"MAIL FROM: <$from>\n"); fputs($fp,"RCPT TO: <$to1>\n"); fputs($fp,"DATA\n"); fputs($fp,$this->headers); if (strlen($headers)) fputs($fp,"$headers\n"); fputs($fp,$this->mime); fputs($fp,"\n.\nQUIT\n"); while(!feof($fp)) { $resp.=fgets($fp,1024); } //var_dump($resp); fclose($fp); } } } ?>