Php > E-Mail sample source codes
Class for sending mail with MIME attachments in multipart format using
Class for sending mail with MIME attachments in multipart format using external sendmail, mimencode and zip class Mail { var $from; //The sender var $to; //The recipient var $subject; //The subject line var $headers; //A hash of additional headers (headername => headervalue) var $zipname; //The name of the file the attachments are zipped into //($zipname == false if attachments are to be sent //individually) var $attachments; //An array of files to attach var $body; //The body text of the message //Mail constructor: initializes vars to default values. 'Nuff said. function Mail() { $this->from = ""; $this->to = ""; $this->subject = ""; $this->headers = array(); $this->zipname = false; $this->attachments = array(); $this->body = ""; } //Auxiliary method, used to guess a file's MIME type //based on its extension. Doesn't know about too many //extensions right now function guessMIMEType($filename) { //GUESS MIME TYPE $filename = basename($filename); if(strrchr($filename,".") == false) { return("application/octet-stream"); } $ext = strrchr($filename,"."); switch($ext) { case ".gif": return "image/gif"; break; case ".gz": return "application/x-gzip"; case ".htm": case ".html": return "text/html"; break; case ".jpg": return "image/jpeg"; break; case ".tar": return "application/x-tar"; break; case ".txt": return "text/plain"; break; case ".zip": return "application/zip"; break; default: return "application/octet-stream"; break; } } //Cute little convenience method. Supply it with a filename to //zip attachments to, or supply it with false if attachments are //sent individually function ZipAttachments($name) { $this->zipname = $name; } //The workhorse method, does the actually sending of the mail. //Doesn't check for errors so be careful! function Send($sendmail = "sendmail") { if($this->from == "") $fp = popen($sendmail . " -i " . $this->to, "w"); else $fp = popen($sendmail . " -i -f\"" . $this->from . "\" " . $this->to, "w"); $mime_boundary = "-1747901728-1448367683-913849620=:4553"; if($fp == false) return false; //Write subject header fwrite($fp,"Subject: " . $this->subject . "\n"); //Write user-defined headers reset($this->headers); while(list($hdrname,$hdrval) = each($this->headers)) { fwrite($fp,$hdrname . ": " . $hdrval . "\n"); } //If there are attachments, this needs to be a MIME message if(count($this->attachments) > 0) { //Write MIME headers fwrite($fp,"MIME-Version: 1.0\n"); fwrite($fp,"Content-Type: multipart/mixed; BOUNDARY=\"" . $mime_boundary . "\"\n"); fwrite($fp,"\n"); //Write dummy message body fwrite($fp," This message is in MIME format. The first part should be readable text,\n"); fwrite($fp," while the remaining parts are likely unreadable without MIME-aware tools.\n"); fwrite($fp,"\n"); //Write message text fwrite($fp,"--" . "$mime_boundary" . "\n"); fwrite($fp,"Content-Type: text/plain; charset=US- ASCII\n"); fwrite($fp,"\n"); fwrite($fp,$this->body); fwrite($fp,"\n"); //Handle attachments if($this->zipname != false) { //IF we've been told to //zip the attachments fwrite($fp,"--" . $mime_boundary . "\n"); fwrite($fp,"Content-Type: application/zip; name= \"". $this->zipname . "\"\n"); fwrite($fp,"Content-Transfer-Encoding: base64 \n"); //fwrite($fp,"Content-ID: " . $content_ID . "\n"); fwrite($fp,"Content-Description:\n"); fwrite($fp,"\n"); $cmdline = "zip - "; while(list($key, $attachment_name) = each($this->attachments)) $cmdline .= "$attachment_name "; $cmdline .= "| mimencode -b"; $pp = popen($cmdline,"r"); while(!feof($pp)) { $data = fread($pp,4096); fwrite($fp,$data); } pclose($pp); } else { //no need to zip the attachments, attach them //separately while(list($key, $attachment_name) = each($this->attachments)) { fwrite($fp,"--" . $mime_boundary . "\n"); fwrite($fp,"Content-Type: " . $this->guessMIMEType($attachment_name) . "; name=\"". basename($attachment_name) . "\"\n"); fwrite($fp,"Content-Transfer-Encoding: base64\n"); //fwrite($fp,"Content-ID: " . //$content_ID . "\n"); fwrite($fp,"Content-Description:\n"); fwrite($fp,"\n"); $pp = popen("mimencode -b $attachment_name","r"); while(!feof($pp)) { $data = fread($pp,4096); fwrite($fp,$data); } pclose($pp); } } fwrite($fp,"--" . $mime_boundary . "--\n"); } //No need for a MIME message, so it's an RFC822 message else { fwrite($fp,"\n"); fwrite($fp,$this->body); } pclose($fp); } } ?>
Php Codes
Algorithms
Arrays
Authentication
Calendar
Code Snippets
Programs
Content Manage
Contest Related
Cookies
Credit Cards
DBase Related
Databases
Date Time
Directories
E-Mail
Errors
File
File System
Forms
Handling
Graphics
HTML and PHP
Informix
Ingres
InterBase
LDAP
Look and Feel
Miscellaneous
MySQL
Other
PHP Classes
Searching
Navigation
Statistics
Strings
User Manage