Page 1 of 1

Sending email file attachments

Posted: Tue Sep 02, 2008 6:35 am
by lynchpin
Hi

I want to send emails with file attachments using the php mail() function. The problem is I iniatially designed my web site to use PEAR mail() to send the emails(this worked fine). But my ISP only allows the use of php mail() as they dont have PEAR mail installed on their server. How do I attach files using the mail () function ???

Please advice.

Thank you.

Re: Sending email file attachments

Posted: Tue Sep 02, 2008 3:46 pm
by webxan
give it a try, you can modify the code below to use file from form post rather from the specified path

Code: Select all

 
<?php
function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
    $file = $path.$filename;
    $file_size = filesize($file);
    $handle = fopen($file, "r");
    $content = fread($handle, $file_size);
    fclose($handle);
    $content = chunk_split(base64_encode($content));
    $uid = md5(uniqid(time()));
    $name = basename($file);
    $header = "From: ".$from_name." <".$from_mail.">\r\n";
    $header .= "Reply-To: ".$replyto."\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
    $header .= "This is a multi-part message in MIME format.\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
    $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $header .= $message."\r\n\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use diff. tyoes here 
    $header .= "Content-Transfer-Encoding: base64\r\n";
    $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
    $header .= $content."\r\n\r\n";
    $header .= "--".$uid."--";
    if (mail($mailto, $subject, "", $header)) {
        echo = "mail send ... OK"; // or use booleans here
    } else {
        echo = "mail send ... ERROR!";
    }
}
// how to use
$my_file = "somefile.zip";
$my_path = $_SERVER['DOCUMENT_ROOT']."/your_path_here/";
$my_name = "Olaf Lederer";
$my_mail = "my@mail.com";
$my_replyto = "my_reply_to@mail.net";
$my_subject = "This is a mail with attachment.";
$my_message = "Hallo,\r\ndo you like this script? I hope it will help.\r\n\r\ngr. Olaf";
mail_attachment($my_file, $my_path, "recipient@mail.org", $my_mail, $my_name, $my_replyto, $my_subject, $my_message);
?>
 

Re: Sending email file attachments

Posted: Tue Sep 02, 2008 4:14 pm
by Mds
You can use phpmailer class to send HTML mail though. try it .

Re: Sending email file attachments

Posted: Thu Sep 04, 2008 3:57 am
by lynchpin
Thanks alot guyz for the suggestion/code. I got it working with a tutorial i found online

Thanks again.