fazzfarrell Posted February 21, 2007 Share Posted February 21, 2007 can any one help, If I fill in the form and make no attachement the form does not send and display the message, if I do attach it works fine? any one help this is my code <?php if ($_SERVER['REQUEST_METHOD']=="POST"){ // we'll begin by assigning the To address and message subject $to=$HTTP_POST_VARS['ToEmail']; $subject="E-mail with attachment"; // get the sender's name and email address // we'll just plug them a variable to be used later $from = stripslashes($_POST['FirstName'])."<".stripslashes($_POST['EMail']).">"; // 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']; $myTitle = $HTTP_POST_VARS['Title']; $myFirstName = $HTTP_POST_VARS['FirstName']; $myLastName = $HTTP_POST_VARS['LastName']; $myTelephone = $HTTP_POST_VARS['Telephone']; $myEmail = $HTTP_POST_VARS['EMail']; $myMessage = $HTTP_POST_VARS['Message']; $ContactBy = $HTTP_POST_VARS['ContactBy']; $FoundUs = $HTTP_POST_VARS['FoundUs']; // here we'll hard code a text message // again, in reality, you'll normally get this from the form submission $message = " My Title is: $myTitle, My First Name is: $myFirstName, My Second Name is: $myLastName, My Telephone number is: $myTelephone, My Email is: $myEmail, Message: $myMessage, Contact Me via: $ContactBy, Found us via: $FoundUs"; // 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 for applying to AgilityWorks."; else echo "Failed to send"; } } else { ?> Quote Link to comment Share on other sites More sharing options...
Jessica Posted February 21, 2007 Share Posted February 21, 2007 You only send the mail within the // if the upload succeded, the file will exist if (file_exists($tmp_name)){ block. Quote Link to comment Share on other sites More sharing options...
fazzfarrell Posted February 21, 2007 Author Share Posted February 21, 2007 thanks but nor quite sure what you mean? not sure if I explained myself properly either! I want to be able to send the mail with or without the attachement! Quote Link to comment Share on other sites More sharing options...
Jessica Posted February 21, 2007 Share Posted February 21, 2007 So you need to move the mail statement outside of the if statement. Right now it will only send when there is an attachment because you only tell it to mail if there is. Move it outside of the if() stuff. Quote Link to comment Share on other sites More sharing options...
fazzfarrell Posted February 21, 2007 Author Share Posted February 21, 2007 sorry quite new to this stuff! I have moved it with errors. I am at a loss sorry Quote Link to comment Share on other sites More sharing options...
Jessica Posted February 21, 2007 Share Posted February 21, 2007 Well, we can't do anything without the errors. Quote Link to comment Share on other sites More sharing options...
fazzfarrell Posted February 21, 2007 Author Share Posted February 21, 2007 I blocked it out not sure were im supposed to move it to! Quote Link to comment Share on other sites More sharing options...
Jessica Posted February 21, 2007 Share Posted February 21, 2007 Do you just not get what you're doing with the code? <?php if ($_SERVER['REQUEST_METHOD']=="POST"){ // we'll begin by assigning the To address and message subject $to=$HTTP_POST_VARS['ToEmail']; $subject="E-mail with attachment"; // get the sender's name and email address // we'll just plug them a variable to be used later $from = stripslashes($_POST['FirstName'])."<".stripslashes($_POST['EMail']).">"; // 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']; $myTitle = $HTTP_POST_VARS['Title']; $myFirstName = $HTTP_POST_VARS['FirstName']; $myLastName = $HTTP_POST_VARS['LastName']; $myTelephone = $HTTP_POST_VARS['Telephone']; $myEmail = $HTTP_POST_VARS['EMail']; $myMessage = $HTTP_POST_VARS['Message']; $ContactBy = $HTTP_POST_VARS['ContactBy']; $FoundUs = $HTTP_POST_VARS['FoundUs']; // here we'll hard code a text message // again, in reality, you'll normally get this from the form submission $message = " My Title is: $myTitle, My First Name is: $myFirstName, My Second Name is: $myLastName, My Telephone number is: $myTelephone, My Email is: $myEmail, Message: $myMessage, Contact Me via: $ContactBy, Found us via: $FoundUs"; // 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"; // 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 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 for applying to AgilityWorks."; else echo "Failed to send"; } else { ?> Quote Link to comment Share on other sites More sharing options...
Ninjakreborn Posted February 21, 2007 Share Posted February 21, 2007 I am not trying to intrude on the post. However it seems that this might be a person called "malice" that use to start trouble on the forms. I am pretty sure if you keep answering his questions he is going to continue running you around in circles. He does that to try and make people look stupid, just my advice. If I am wrong I apologize for interrupting. Quote Link to comment Share on other sites More sharing options...
fazzfarrell Posted February 22, 2007 Author Share Posted February 22, 2007 Ah now I see what you mean, I keep moving the code to the wrong place! It now works a treat thank you Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.