JSHINER Posted October 23, 2007 Share Posted October 23, 2007 <?php $header .= "From: ".$email."\r\n"; $mailresult = mail($to,$subject,$msgtxt, $header); ?> How can I add a PDF attachment to the above? Link to comment https://forums.phpfreaks.com/topic/74468-sending-attachment-using-mail/ Share on other sites More sharing options...
The Little Guy Posted October 23, 2007 Share Posted October 23, 2007 Found this on php.net: <?php function send_mail($to, $body, $subject, $fromaddress, $fromname, $attachments=false) { $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 .= "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.$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.$eol; # Text Version $msg .= "--".$htmlalt_mime_boundary.$eol; $msg .= "Content-Type: text/plain; charset=iso-8859-1".$eol; $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol; $msg .= strip_tags(str_replace("<br>", "\n", substr($body, (strpos($body, "<body>")+6)))).$eol.$eol; # HTML Version $msg .= "--".$htmlalt_mime_boundary.$eol; $msg .= "Content-Type: text/html; charset=iso-8859-1".$eol; $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol; $msg .= $body.$eol.$eol; //close the html/plain text alternate portion $msg .= "--".$htmlalt_mime_boundary."--".$eol.$eol; if ($attachments !== false) { for($i=0; $i < count($attachments); $i++) { if (is_file($attachments[$i]["file"])) { # File for Attachment $file_name = substr($attachments[$i]["file"], (strrpos($attachments[$i]["file"], "/")+1)); $handle=fopen($attachments[$i]["file"], 'rb'); $f_contents=fread($handle, filesize($attachments[$i]["file"])); $f_contents=chunk_split(base64_encode($f_contents)); //Encode The Data For Transition using base64_encode(); $f_type=filetype($attachments[$i]["file"]); fclose($handle); # Attachment $msg .= "--".$mime_boundary.$eol; $msg .= "Content-Type: ".$attachments[$i]["content_type"]."; 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; } ?> Link to comment https://forums.phpfreaks.com/topic/74468-sending-attachment-using-mail/#findComment-376275 Share on other sites More sharing options...
JSHINER Posted October 23, 2007 Author Share Posted October 23, 2007 Yea... was hoping for something a little less involved. Link to comment https://forums.phpfreaks.com/topic/74468-sending-attachment-using-mail/#findComment-376279 Share on other sites More sharing options...
BlueSkyIS Posted October 23, 2007 Share Posted October 23, 2007 i use a class called htmlMimeMail which takes out much of the mime pain: include_once($_SERVER['DOCUMENT_ROOT']."/includes/htmlMimeMail.php"); $mail = new htmlMimeMail(); $attachment_file = $mail->getFile($upload_dir . $local_file); $mail->addAttachment($attachment_file, $local_file, 'application/octet-stream'); $mail->setText($message); $mail->setReturnPath($return_address); // Set some head $mail->setFrom($return_address); $mail->setSubject($subject); $result = $mail->send(array($recipient)); http://www.phpguru.org/static/mime.mail.html Link to comment https://forums.phpfreaks.com/topic/74468-sending-attachment-using-mail/#findComment-376284 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.