PHP Email Attachment Function
June 20th, 2008Read More email, php
Sending an email with PHP is pretty straight forwards. It's very useful for emailing reports generated from cron jobs etc.
Sometimes though you need your application to email an attachment.
After a load of messing around I have hacked together this email attachment PHP function.
PHP:
-
function email_attachment($to_email, $email, $subject,$our_email_name, $our_email, $file_location, $default_filetype='application/zip'){
-
$email = '<font face="arial">' . $email . '</font>';
-
$fileatt = $file_location;
-
$fileatttype = mime_content_type($file_location);
-
}else{
-
$fileatttype = $default_filetype;;
-
}
-
//prepare attachment
-
//create mime boundary
-
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
-
//create email section
-
$message = "This is a multi-part message in MIME format.\n\n" .
-
"--{$mime_boundary}\n" .
-
"Content-type: text/html; charset=us-ascii\n" .
-
"Content-Transfer-Encoding: 7bit\n\n" .
-
$email . "\n\n";
-
//create attachment section
-
$message .= "--{$mime_boundary}\n" .
-
"Content-Type: {$fileatttype};\n" .
-
" name=\"{$fileattname}\"\n" .
-
"Content-Disposition: attachment;\n" .
-
" filename=\"{$fileattname}\"\n" .
-
"Content-Transfer-Encoding: base64\n\n" .
-
$data . "\n\n" .
-
"--{$mime_boundary}--\n";
-
//headers
-
$domain = $exp[1];
-
$headers = "From: $our_email_name<$our_email>" . "\n";
-
$headers .= "Reply-To: $our_email"."\n";
-
$headers .= "Return-Path: $our_email" . "\n"; // these two to set reply address
-
$headers .= "X-Mailer: Edmonds Commerce Email Attachment Function"."\n"; // These two to help avoid spam-filters
-
$headers .= "MIME-Version: 1.0\n" .
-
"Content-Type: multipart/mixed;\n" .
-
" boundary=\"{$mime_boundary}\"";
-
-
}
The PHP and Email Journey Continues
For a fully featured email attachment class this is definitely worth checking out. If you just want a quick function though without any bells and whistles then you should find my function will do the trick.












































September 6th, 2008 at 7:36 am
This works beautifully if 'allow_url_open' is switched on but most servers have it switched off for security reasons. I have been trying to replace the relevant bits of code with CURL but an struggling with opening the file and reading the data.
September 7th, 2008 at 5:04 pm
If you want to attach a remote file (accessed via a URL) then I would recommend downloading the file and storing it locally before trying to send it as an attachment using this function.
October 22nd, 2008 at 9:01 pm
Excellent work.
I've read quite a few out-dated tutorials that don't seem to work, but this one worked like a charm and was easy to understand/modify.
Thanks!
October 23rd, 2008 at 8:09 am
Thanks for the comment
if you have managed to improve the function at all it would be great if you could share it here.