I am happy with sending an email using PHP, i would like to know how to send an attachment also in my email:

`

<?php
$to = "es@yahoo.com";
$subject = "Sent by portal";
$message = "Get attachment";

$from = "se@gmail.com";

$file = $_POST['ah'];


 function mail_attachment($to, $subject, $message, $from, $file) {
  // $file should include path and filename
  $filename = basename($file);
  $file_size = filesize($file);
  $content = chunk_split(base64_encode(file_get_contents($file))); 
  $uid = md5(uniqid(time()));
  $from = str_replace(array("\r", "\n"), '', $from); // to prevent email injection
  $header = "From: ".$from."\r\n"
      ."MIME-Version: 1.0\r\n"
      ."Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"
      ."This is a multi-part message in MIME format.\r\n" 
      ."--".$uid."\r\n"
      ."Content-type:text/plain; charset=iso-8859-1\r\n"
      ."Content-Transfer-Encoding: 7bit\r\n\r\n"
      .$message."\r\n\r\n"
      ."--".$uid."\r\n"
      ."Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"
      ."Content-Transfer-Encoding: base64\r\n"
      ."Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"
      .$content."\r\n\r\n"
      ."--".$uid."--"; 
  return mail($to, $subject, "", $header);
 }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
Success
</body>
</html>
Inline Code Example Here

`

Recommended Answers

All 2 Replies

You have to send a Content-Type:multipart/mixed email
see 3e example

Not mine. I'm afraid I forgot who it belongs to. Check my previous posts, I'm sure it's in there somewhere.
Anyway...

// Function to send emails with multiple attachments:
 function multi_attach_mail($to, $files, $sendermail, $message_details = "", $cc = "", $attachment_subject = ""){

     // email fields: to, from, subject, and so on
     $from = "<".$sendermail.">";
     $cc = "<" .$cc. ">"; 
    $subject = $attachment_subject. " " .date("d.M H:i")." F=".count($files); 
    $message = date("Y.m.d H:i:s")."\n".count($files)." attachment(s)\n\n";
    $message .= $message_details;
     $headers = "From: $from\n";
     $headers .= "Cc: $cc\n";
     $headers .= "Reply-To: $from\n";
     $headers .= "Return-Path: $from\n";
     $headers .= "X-Sender: yfr.co.uk";

     // boundary 
    $semi_rand = md5(time()); 
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

     // headers for attachment 
    $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; 

     // multipart boundary 
    $message = "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
     "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; 

     // preparing attachments
     for($i=0;$i<count($files);$i++){
         if(is_file($files[$i])){
             $message .= "--{$mime_boundary}\n";
             $fp =    @fopen($files[$i],"rb");
         $data =    @fread($fp,filesize($files[$i]));
                     @fclose($fp);
             $data = chunk_split(base64_encode($data));
             $message .= "Content-Type: application/octet-stream; name=\"".basename($files[$i])."\"\n" . 
            "Content-Description: ".basename($files[$i])."\n" .
             "Content-Disposition: attachment;\n" . " filename=\"".basename($files[$i])."\"; size=".filesize($files[$i]).";\n" . 
            "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";


             }
         }
     $message .= "--{$mime_boundary}--";
     $returnpath = "-f" . $sendermail;
     $ok = @mail($to, $subject, $message, $headers, $returnpath); 
    if($ok){ return $i; } else { return 0; }
     }

########## End of Mailing Function ###################################################################################
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.