If the parameter values are not included: $ mail = new html_mime_mail (); $ html = "HTML content"; $ mail-> add_html ($ html, $ text ); $ mail-> build_message (); $ mail-> send (recipient, Email, sender, Email, subject, external Header: $ url = "www.cuti.com. my/AD/"; // second digit? FONT color = "#007700"> }? FONT color = "#007700">} No http header: // The End Of The header has a diagonal slash $ path = "/MAIL/AD /"; // The End Of The Zookeeper router interface is oblique. $ filename1 = a.jpg; $ backgrnd1 = fread ($ fp = fopen ($ path. $ filename1, r), filesize ($ path. $ filename1); fclose ($ fp );... so on... $ filename6 = f.gif; $ backgrnd6 = fread ($ fp = fopen ($ path. $ filename6, r), filesize ($ path. $ filename6); fclose ($ fp); $ mail-> add_html_image ($ backgrnd1, $ filename1, image/jpeg, http ://. $ url. $ filename1 );... so on... $ mail-> add_html_image ($ backgrnd6, $ filename6, image/gif, http ://. $ url. $ filename6); $ mail = new html_mime_mail (); $ html = "HTML content inclusion"; $ mail-> add_html ($ html, $ text ); $ mail-> build_message (); $ mail-> send (recipient, Email, sender, Email, subject, external Header );";} /*************************************** ** Title .........: HTML Mime Mail class ** Version .......: 1.26 ** Author ........: Richard Heyes ** Filename...: html_mime_mail.class ** Last changed...: 25/06/2000 ** Notes...: Based upon mime_mail.class ** by Tobias Ratschiller ** And Sascha Schumann . **-Thanks to Thomas Flemming for supplying a fix ** for Win32. **-Made headers terminated by CRLF instead of LF, now ** compliant with RFC822. Thanks to Pao-Hsi. Huang. **-Fixed bug; certain mail systems (gmx.net in particle) ** were rejecting mail because of a space character either ** side of the equal sign on the boundary line. thanks to ** Peter Holland for policying me. **-Fixed bug; $ html_images was tested to be an array or not ** but was set to be an array during object creation, so the ** test always returned true. thanks to Bob Silva for ** policying me. **-Fixed bug; when looping with $ obj-> send (), From: headers ** were accumulating. bummer. thanks to Lance Rasmussen for ** policying me. **-See http://www.heyes-computing.net/scripts/ for a zip/tar ** containing an example script. ***************************************/ class html_mime_mail {var $ headers; var $ body; var $ multipart; var $ mime; var $ html; var $ html_text; var $ html_images = array (); var $ cids = array (); var $ do_html; var $ parts = array (); /*************************************** ** Constructor function. sets the headers ** if supplied. ***************************************/ function html_mime_mail ($ headers =) {$ this-> headers = $ headers ;} /*************************************** ** Adds a html part to the mail. ** Also replaces image names with ** content-ids. ***************************************/ function add_html ($ html, $ text) {$ this-> do_html = 1; $ this-> html = $ html; $ this-> html_text = $ text; if (is_array ($ this-> html_images) AND count ($ this-> html_images)> 0) {/* for ($ I = 0; $ I Html_images); $ I ++) {$ this-> html = ereg_replace ($ this-> html_images [$ I] [name], cid :. $ this-> html_images [$ I] [cid], $ this-> html );} */}}/*********************************** * ***** Builds html part of email. ***************************************/ function build_html ($ orig_boundary) {$ sec_boundary = _. md5 (uniqid (time (); $ thr_boundary = _. md5 (uniqid (time (); if (count ($ this-> html_images) = 0) {$ this-> multipart. = --. $ orig_boundary. ""; $ this-> multipart. = Content-Type: multipart/alternative ;. chr (10 ). chr (9 ). boundary = ". $ sec_boundary. "; // ttj added below $ this-> multipart. = --. $ thr_boundary. ""; $ this-> multipart. = Content-Type: text/plain. ""; $ this-> multipart. = $ this-> html_text. ""; $ this-> multipart. = --. $ thr_boundary. "--"; // ttj added above $ this-> multipart. = --. $ sec_boundary. ""; $ this-> multipart. = Content-Type: text/plain. ""; $ this-> multipart. = Content-Transfer-Encoding: base64. ""; $ this-> multipart. = chunk_split (base64_encode ($ this-> html_text )). ""; // ttj added below $ this-> multipart. = --. $ thr_boundary. ""; $ this-> multipart. = Content-Type: text/html. ""; $ this-> multipart. = $ this-> html. ""; $ this-> multipart. = --. $ thr_boundary. "--"; // ttj added above $ this-> multipart. = --. $ sec_boundary. ""; $ this-> multipart. = Content-Type: text/html. ""; $ this-> multipart. = Content-Transfer-Encoding: base64. ""; $ this-> multipart. = chunk_split (base64_encode ($ this-> html )). ""; $ this-> multipart. = --. $ sec_boundary. "--";} else {$ this-> multipart. = --. $ orig_boundary. ""; $ this-> multipart. = Content-Type: multipart/related ;. chr (10 ). chr (9 ). boundary = ". $ sec_boundary. "; $ this-> multipart. = --. $ sec_boundary. ""; $ this-> multipart. = Content-Type: multipart/alternative ;. chr (10 ). chr (9 ). boundary = ". $ thr_boundary. "; $ this-> multipart. = --. $ thr_boundary. ""; $ this-> multipart. = Content-Type: text/plain. ""; $ this-> multipart. = Content-Transfer-Encoding: base64. ""; $ this-> multipart. = chunk_split (base64_encode ($ this-> html_text )). ""; // ttj added below $ this-> multipart. = --. $ thr_boundary. ""; $ this-> multipart. = Content-Type: text/html. ""; $ this-> multipart. = $ this-> html. ""; $ this-> multipart. = --. $ thr_boundary. "--"; // ttj added above $ this-> multipart. = --. $ thr_boundary. ""; $ this-> multipart. = Content-Type: text/html. ""; $ this-> multipart. = Content-Transfer-Encoding: base64. ""; $ this-> multipart. = chunk_split (base64_encode ($ this-> html )). ""; $ this-> multipart. = --. $ thr_boundary. "--"; for ($ I = 0; $ I Html_images); $ I ++) {$ this-> multipart. = --. $ sec_boundary. ""; $ this-> build_html_image ($ I) ;}$ this-> multipart. = "--". $ sec_boundary. "--";}} /*************************************** ** Adds an image to the list of embedded ** images. ***************************************/ function add_html_image ($ file, $ name =, $ c_type = application/octet-stream, $ location =) {$ this-> html_images [] = array (body ==>$ File, name =>$ name, c_type =>$ c_type, location =>$ location, cid => md5 (uniqid (time ())));} /*************************************** ** Adds a file to the list of attachments. ***************************************/ function add_attachment ($ file, $ name =, $ c_type = application/octet-stream) {$ this-> parts [] = array (body => $ file, name => $ name, c_type => $ c_type );}/********************* * ****************** Builds an embedded image part of an *** html mail. ***************************************/ function build_html_image ($ I) {$ this-> multipart. = Content-Type :. $ this-> html_images [$ I] [c_type]; if ($ this-> html_images [$ I] [name]! =) $ This-> multipart. =; name = ". $ this-> html_images [$ I] [name]. "; else $ this-> multipart. = ""; $ this-> multipart. = Content-Transfer-Encoding: base64. ""; $ this-> multipart. = Content-Location :. $ this-> html_images [$ I] [location]. ""; $ this-> multipart. = Content-ID: <. $ this-> html_images [$ I] [cid]. ">"; $ this-> multipart. = chunk_split (base64_encode ($ this-> html_images [$ I] [body]). "";} /*************************************** ** Builds a single part of a multipart ** message. ***************************************/ function build_part ($ I) {$ message_part =; $ message_par