note 83825 deleted from ref.mail by nlopess
| From: | nlopess@php.net | Date: | Sun, 15 Jun 2008 13:03:02 +0000 |
| Subject: | note 83825 deleted from ref.mail by nlopess | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-140471@lists.php.net to get a copy of this message | ||
Note Submitter: me at sallyahmed dot com
----
I have fixed the file attachment with any file type function using the proper set of \r\n
terminator, as stated above email blocks are very sensitive and care should be taken when composing
attachment... the function below has been tested with xls xlsx excel files zip, pdf, doc just set
the appropriate filetype attribute and send it along with the other information to the function...
function send_mail($to,$cc, $body, $subject, $fromaddress, $fromname, $attachments,$filetype)
{
$eol="\r\n";
$mime_boundary=md5(time());
# Common Headers
$headers .= "From: ".$fromname."<".$fromaddress.">".$eol;
$headers .= "Reply-To: ".$fromname."<".$fromaddress.">".$eol;
$headers .= "Return-Path:
".$fromname."<".$fromaddress.">".$eol; // these two to set reply
address
$headers .= "To: ".$to.$eol; // these two to set reply address
$headers .= "Cc: ".$cc.$eol; // these two to set reply address
$headers .= "Message-ID: <".time()."-".$fromaddress.">".$eol;
$headers .= "X-Mailer: PHP v".phpversion().$eol; // These two to help avoid
spam-filters
# Boundry for marking the split & Multitype Headers
$headers .= 'MIME-Version: 1.0'.$eol;
$headers .= "Content-Type: multipart/mixed;
boundary=\"".$mime_boundary."\"".$eol.$eol;
# Open the first part of the mail
$msg = "--".$mime_boundary.$eol;
$htmlalt_mime_boundary = $mime_boundary."_htmlalt"; //we must define a different MIME
boundary for this section
# Setup for text OR html -
$msg .= "Content-Type: multipart/alternative;
boundary=\"".$htmlalt_mime_boundary."\"".$eol;
# HTML Version
$msg .= "--".$htmlalt_mime_boundary.$eol;
$msg .= "Content-Type: text/html; charset=iso-8859-1".$eol;
$msg .= "Content-Transfer-Encoding: 8bit".$eol;
$msg .= $body.$eol;
//close the html/plain text alternate portion
$msg .= "--".$htmlalt_mime_boundary."--".$eol.$eol;
# File for Attachment
$file_name = $attachments;
echo $file_name;
$handle=fopen($attachments, 'rb');
$f_contents=fread($handle, filesize($attachments));
$f_contents=chunk_split(base64_encode($f_contents)); //Encode The Data For Transition
using base64_encode();
$f_type=filetype($attachments);
fclose($handle);
# Attachment
$msg .= "--".$mime_boundary.$eol;
$msg .= "Content-Type: ".$filetype.";
name=\"".$file_name."\"".$eol; // sometimes i have to send MS Word, use
'msword' instead of 'pdf'
$msg .= "Content-Transfer-Encoding: base64".$eol;
$msg .= "Content-Description: ".$file_name.$eol;
$msg .= "Content-Disposition: attachment;
filename=\"".$file_name."\"".$eol.$eol; // !! This line needs TWO end of
lines !! IMPORTANT !!
$msg .= $f_contents.$eol.$eol;
# Finished
$msg .= "--".$mime_boundary."--".$eol.$eol; // finish with two eol's for
better security. see Injection.
# SEND THE EMAIL
//ini_set(sendmail_from,$fromaddress); // the INI lines are to force the From Address to be used
!
$mail_sent = mail($to, $subject, $msg, $headers);
//ini_restore(sendmail_from);
return $mail_sent;
}
Sally Ahmed http://www.sallyahmed.com