0

I'm trying to make a Dynamic contact using HTML, PHP and JS.

I've gotten so far that it's sending emails but the header is blocking the content and the attachments aren't sent with the email.

HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Order Form</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" type="text/css" href="css/default.css"/>
    <script type="text/javascript" src="js/script.js"></script> 
</head>
<body>    
    <form action="process.php" class="register" method="POST">
        <h1>Artwork Upload</h1>
        <fieldset class="row1">
            <legend>Order Information</legend>
            <p>
                <label>Order No * 
                </label>
                <input name="orderno" type="text" required="required"/>
                <label>Name</label>
                <input name="name" type="text" required="required" />
                <label>E mail</label>
                <input name="email" type="text" required="required" />

            </p>
            <div class="clear"></div>
        </fieldset>
        <fieldset class="row2">
            <legend>Graphics per Product</legend>
            <p> 
                <input type="button" value="Add more images" onClick="addRow('dataTable')" /> 
                <input type="button" value="Remove selected lines" onClick="deleteRow('dataTable')"  /> 
                <p>(All acions apply only to entries with check marked check boxes only.)</p>
            </p>
           <table id="dataTable" class="form" border="1">
              <tbody>
                <tr>
                  <p>
                    <td><input type="checkbox" required="required" name="chk[]" checked="checked" /></td>
                    <td>
                        <label>Product code (SKU)</label>
                        <input type="text" required="required" name="BX_SKU[]">
                     </td>
                     <td>
                        <label for="BX_age">Product Name</label>
                        <input type="text" required="required" name="BX_Item[]">
                     </td>
                     <td>
                        <label for="BX_gender">Upload</label>
                        <input name="attachment" type="file">
                     </td>
                     <td>
                        <label for="BX_birth">Comments</label>
                        <input type="textarea" name="BX_birth" required="required">
                     </td>
                        </p>
                </tr>
                </tbody>
            </table>
            <div class="clear"></div>
        </fieldset>
        <input class="submit" type="submit" value="Confirm &raquo;" />

        <div class="clear"></div>
    </form>

</body>

PHP

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>A3M Artwork Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="css/default.css"/>
</head>
<body>    
<form action="" class="register">
<h1>Artwork Upload</h1>
<?php if(isset($_POST)==true && empty($_POST)==false): 
$chkbox = $_POST['chk'];
$bus = $_POST['bus'];
$day = $_POST['day'];
$month = $_POST['month'];
$mob = $_POST['mob'];
$type = $_POST['type'];
$from = $_POST['from'];
$to=$_POST['to'];
$root=$_POST['root'];
$BX_NAME=$_POST['BX_SKU'];
$BX_age=$_POST['BX_age'];           
$BX_gender=$_POST['BX_gender'];
$BX_birth=$_POST['BX_birth'];                           
// Email address to which you want to send email
$to = "lee@boxchilli.com";
$subject = "A3M User Upload";       
$message = "Name:";
$message = $_POST['name'];
$message = "Email:";
$message = $_POST['email'];
$message = "Order ID:";
$message = $_POST['orderno'];
$message = "Product Name:";
$message = $_POST['BX_Item[]'];
$message = "Comments:";
$message = $_POST['BX_birth]'];
/*********Creating Uniqid Session*******/
$txtSid = md5(uniqid(time()));
$headers = "";
$headers .= $_POST["name"]."<".$_POST["email"].">\nReply-To: ".$_POST["email"].""; 
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"".$txtSid."\"\n\n";
$headers .= "This is a multi-part message in MIME format.\n"; 
$headers .= "--".$txtSid."\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "Content-Transfer-Encoding: 7bit\n\n";
$headers .= $message."\n\n";
/***********Email Attachment************/
if($_FILES["attachment"]["name"] != "")
{
$txtFilesName = $_FILES["attachment"]["name"];
$txtContent = chunk_split(base64_encode(file_get_contents($_FILES["attachment"]["tmp_name"]))); 
$headers .= "--".$txtSid."\n";
$headers .= "Content-Type: application/octet-stream; name=\"".$txtFilesName."\"\n"; 
$headers .= "Content-Transfer-Encoding: base64\n";
$headers .= "Content-Disposition: attachment; filename=\"".$txtFilesName."\"\n\n";
$headers .= $txtContent."\n\n";
} 
// @ is for skiping Errors //
$flgSend = @mail($to,$subject,null,$headers,$message);  
if($flgSend)
{
echo "Email Sent SuccessFully.";
}
else
{
echo "Error in Sending Email.";
}
?>
<fieldset class="row1">
<legend>Order Information</legend>
<p>Thank you for your information. A3M Direct will be in touch</p>
<?php else: ?>
<fieldset class="row1">
<legend>Sorry</legend>
<p>Some things went wrong please try again.</p>
</fieldset>
<?php endif; ?>
<div class="clear"></div>
</form>
</body>
</html>

JS

function addRow(tableID) {
    var table = document.getElementById(tableID);
    var rowCount = table.rows.length;
    if(rowCount < 1000){                            // limit the user from creating fields more than your limits
        var row = table.insertRow(rowCount);
        var colCount = table.rows[0].cells.length;
        for(var i=0; i<colCount; i++) {
            var newcell = row.insertCell(i);
            newcell.innerHTML = table.rows[0].cells[i].innerHTML;
        }
    }else{
         alert("Please enter 1000 at a time, or contact A3M Direct.");

    }
}

function deleteRow(tableID) {
    var table = document.getElementById(tableID);
    var rowCount = table.rows.length;
    for(var i=0; i<rowCount; i++) {
        var row = table.rows[i];
        var chkbox = row.cells[0].childNodes[0];
        if(null != chkbox && true == chkbox.checked) {
            if(rowCount <= 1) {                         // limit the user from removing all the fields
                alert("Cannot Remove all information.");


            break;
            }
            table.deleteRow(i);
            rowCount--;
            i--;
        }
    }
}

The email I get when test is

    Lee<lee@boxchilli.com>
    Reply-To: lee@boxchilli.comMIME-Version: 1.0
    Content-Type: multipart/mixed; boundary="8cd09bc06c304411f8d45359ebd270e2"

    This is a multi-part message in MIME format.
    --8cd09bc06c304411f8d45359ebd270e2
    Content-type: text/html; charset=utf-8
    Content-Transfer-Encoding: 7bit

Update:

I've added the code gotten from the Answer below and get this via the email

    lee<lee@boxchilli.com>
Reply-To: lee@boxchilli.comMIME-Version: 1.0
Content-Type: multipart/mixed; boundary="18a2609e079b32ac5c98c954421a15f6"

This is a multi-part message in MIME format.
--18a2609e079b32ac5c98c954421a15f6
Content-type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit



--18a2609e079b32ac5c98c954421a15f6
Content-Type: application/octet-stream; name="mjweb-new-year.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="mjweb-new-year.jpg"

/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABQAAD/4QMtaHR0cDov
L25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENl
aGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4
OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6
NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHht
bG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0i
aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1w
lee murphy
  • 134
  • 1
  • 11

1 Answers1

0

Add the enctype attribute to your form (enctype="multipart/form-data")

http://www.w3schools.com/tags/att_form_enctype.asp

Daniel
  • 1
  • Thanks I've added this and I know get a rather longer email but no attachment. I'll add the information to my question – lee murphy Jan 16 '14 at 09:05
  • I've never done that, trying to send an attachment with the PHP mail function, I always use PHPMailer library, take a look at this other question and probably you will find your answer [link](http://stackoverflow.com/questions/12301358/send-attachments-with-php-mail) – Daniel Jan 17 '14 at 05:03