CoderZone.org

Category: >> PHP Code >> Email attachments with PHP mail() Bookmark and Share

<< lastnext >>

Snippet Name: Email attachments with PHP mail()

Description: Class to send a file as an attachment with the PHP mail() function.

Also see:
» Transfer or migrate messages betwe...
» Easy way to break apart an email a...
» Send iCal Email Meeting Requests u...
» Email w/ attachments class
» Fake email addresses

Comment: (none)

Author: CoderZone
Language: PHP
Highlight Mode: PHP
Last Modified: March 16th, 2009

<?php
 
class mime_mail 
{ 
var $parts; 
var $to; 
var $from; 
var $headers; 
var $subject; 
var $body; 
 
  /* 
  *     void mime_mail() 
  *     class constructor 
  */          
function mime_mail() 
  { 
  $this->parts = array(); 
  $this->to =  ""; 
  $this->from =  ""; 
  $this->subject =  ""; 
  $this->body =  ""; 
  $this->headers =  ""; 
  } 
 
  /* 
  *     void add_attachment(string message, [string name], [string ctype]) 
  *     Add an attachment to the mail object 
  */ 
function add_attachment($message, $name =  "", $ctype =  "application/octet-stream") 
  { 
  $this->parts[] = array ( 
                           "ctype" => $ctype, 
                           "message" => $message, 
                           "encode" => $encode, 
                           "name" => $name 
                          ); 
  } 
 
/* 
*      void build_message(array part= 
*      Build message parts of an multipart mail 
*/ 
function build_message($part) 
{ 
$message = $part[ "message"]; 
$message = chunk_split(base64_encode($message)); 
$encoding =  "base64"; 
return  "Content-Type: ".$part[ "ctype"]. 
                        ($part[ "name"]? "; name = \"".$part[ "name"]. "\"" :  ""). 
                         "\nContent-Transfer-Encoding: $encoding\n\n$message\n"; 
} 
 
/* 
*      void build_multipart() 
*      Build a multipart mail 
*/ 
function build_multipart() 
{ 
$boundary =  "b".md5(uniqid(time())); 
$multipart =  "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME 
encoded message.\n\n--$boundary"; 
 
for($i = sizeof($this->parts)-1; $i >= 0; $i--) 
    { 
    $multipart .=  "\n".$this->build_message($this->parts[$i]). "--$boundary"; 
    } 
return $multipart.=  "--\n"; 
} 
 
/* 
*      void send() 
*      Send the mail (last class-function to be called) 
*/ 
function send() 
{ 
$mime =  ""; 
if (!empty($this->from)) 
    $mime .=  "From: ".$this->from. "\n"; 
if (!empty($this->headers)) 
    $mime .= $this->headers. "\n"; 
 
if (!empty($this->body)) 
    $this->add_attachment($this->body,  "",  "text/plain");    
$mime .=  "MIME-Version: 1.0\n".$this->build_multipart(); 
mail($this->to, $this->subject,  "", $mime); 
} 
};  // end of class 
 
?>
 
 
There haven't been any comments added for this snippet yet. You may add one if you like.  Add a comment 
© coderzone.org | users online: 6