cupaball Posted May 16, 2009 Share Posted May 16, 2009 Hi all: I found a great script to send an e-mail with attachment. The issue is that when there is no attachment, the email will not send. Can anyone help? I am thinking I need to plug in an if statement somewhere. Here is the code: <?php if ($_SERVER['REQUEST_METHOD']=="POST"){ // we'll begin by assigning the To address and message subject $to="[email protected]"; $subject="Uploaded Event from L4A"; // get the sender's name and email address // we'll just plug them a variable to be used later $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">"; // generate a random string to be used as the boundary marker $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x"; // store the file information to variables for easier access $tmp_name = $_FILES['filename']['tmp_name']; $type = $_FILES['filename']['type']; $name = $_FILES['filename']['name']; $size = $_FILES['filename']['size']; // here we'll hard code a text message // again, in reality, you'll normally get this from the form submission $message = "Tyema: ".stripslashes($_POST['fromname'])." has requested that their event be added to to L4A . The event type is ".stripslashes($_POST['event_type']).""; // if the upload succeded, the file will exist if (file_exists($tmp_name)){ // check to make sure that it is an uploaded file and not a system file if(is_uploaded_file($tmp_name)){ // open the file for a binary read $file = fopen($tmp_name,'rb'); // read the file content into a variable $data = fread($file,filesize($tmp_name)); // close the file fclose($file); // now we encode it and split it into acceptable length lines $data = chunk_split(base64_encode($data)); } // now we'll build the message headers $headers = "From: $from\r\n" . "MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed;\r\n" . " boundary=\"{$mime_boundary}\""; // next, we'll build the message body // note that we insert two dashes in front of the // MIME boundary when we use it $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; // now we'll insert a boundary to indicate we're starting the attachment // we have to specify the content type, file name, and disposition as // an attachment, then add the file content and set another boundary to // indicate that the end of the file has been reached $message .= "--{$mime_boundary}\n" . "Content-Type: {$type};\n" . " name=\"{$name}\"\n" . //"Content-Disposition: attachment;\n" . //" filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n"; // now we just send the message if (@mail($to, $subject, $message, $headers)) echo "Thank You! Your uploaded event has been received."; else echo "Failed to send"; } } else { ?> Link to comment https://forums.phpfreaks.com/topic/158373-email-w-attachement/ Share on other sites More sharing options...
gregor171 Posted May 16, 2009 Share Posted May 16, 2009 try PHPmailer Link to comment https://forums.phpfreaks.com/topic/158373-email-w-attachement/#findComment-835295 Share on other sites More sharing options...
cupaball Posted May 17, 2009 Author Share Posted May 17, 2009 Thanks Link to comment https://forums.phpfreaks.com/topic/158373-email-w-attachement/#findComment-835829 Share on other sites More sharing options...
cupaball Posted May 18, 2009 Author Share Posted May 18, 2009 uhhh...anyone else? Link to comment https://forums.phpfreaks.com/topic/158373-email-w-attachement/#findComment-836095 Share on other sites More sharing options...
cupaball Posted May 18, 2009 Author Share Posted May 18, 2009 Ok, so this is what I have so far... <?php if (!isset($_POST['filename']) && $_SERVER['REQUEST_METHOD']=="POST"){ // we'll begin by assigning the To address and message subject $to="xxxxxxx"; $subject="Uploaded Event from L4A"; // get the sender's name and email address // we'll just plug them a variable to be used later $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">"; // generate a random string to be used as the boundary marker $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x"; // store the file information to variables for easier access $tmp_name = $_FILES['filename']['tmp_name']; $type = $_FILES['filename']['type']; $name = $_FILES['filename']['name']; $size = $_FILES['filename']['size']; // here we'll hard code a text message // again, in reality, you'll normally get this from the form submission $message = "Tyema: ".stripslashes($_POST['fromname'])." has requested that their event be added to to L4A . The event type is ".stripslashes($_POST['event_type']).""; // if the upload succeded, the file will exist if (file_exists($tmp_name)){ // check to make sure that it is an uploaded file and not a system file if(is_uploaded_file($tmp_name)){ // open the file for a binary read $file = fopen($tmp_name,'rb'); // read the file content into a variable $data = fread($file,filesize($tmp_name)); // close the file fclose($file); // now we encode it and split it into acceptable length lines $data = chunk_split(base64_encode($data)); } // now we'll build the message headers $headers = "From: $from\r\n" . "MIME-Version: 1.0\r\n" . "Content-Type: multipart/mixed;\r\n" . " boundary=\"{$mime_boundary}\""; // next, we'll build the message body // note that we insert two dashes in front of the // MIME boundary when we use it $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; // now we'll insert a boundary to indicate we're starting the attachment // we have to specify the content type, file name, and disposition as // an attachment, then add the file content and set another boundary to // indicate that the end of the file has been reached $message .= "--{$mime_boundary}\n" . "Content-Type: {$type};\n" . " name=\"{$name}\"\n" . //"Content-Disposition: attachment;\n" . //" filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n"; // now we just send the message if (@mail($to, $subject, $message, $headers)) echo "Thank You! Your uploaded event has been received."; else echo "Failed to send"; } } else if ($_SERVER['REQUEST_METHOD']=="POST" && isset($_POST['filename'])) { print 'No File!'; } else { ?> <h1>Upload Your Event!</h1> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1"> <p><label for="name">Name:</label> <input type="text" name="fromname"> </p> <p><label for="email">Email:</label> <input type="text" name="fromemail"></p> <p><label for="eventtype">Event Type:</label> <select id="event_type" name="event_type"> <? eventtype();?> </select></p></p> <p><label for="file">File:</label> <input type="file" name="filename"></p> <p> <input type="image" src="/images/btn_upload.jpg" width="53" height="27" id="submit2" value="Sign Up" /> </p> </form> <?php } ?> </body> </html> anyone, i just need a quick and dirty solution Link to comment https://forums.phpfreaks.com/topic/158373-email-w-attachement/#findComment-836130 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.