简体   繁体   中英

Copy HTML form in email PHP

I am trying to copy my HTML form in email body. Below is code where the form is already in php file but I want if the user submits html form file then all the form data between that is not hidden is copied (as disabled elements) in the body of the email. Also if there is any file attachment field, it should be attached to the email.

<?php
// multiple recipients
$to  = 'demo@localhost.com' . ', '; // note the comma
$to .= 'demo@localhost.com';

// subject
$subject = 'Birthday Reminders for August';

// message
$message = '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />


<title>Untitled Document</title>
</head>

<body style="padding:3px; margin:0px;" bgcolor="#FFFFFF">
<table cellpadding="0" cellspacing="0" border="0" width="440">

    <tr><td style="height:10px"></td></tr>
    <tr>
      <td colspan="2" style="text-align:justify; line-height:15px;" class="body">

      <form name="frm" method="POST" action="careersuccess.php" enctype="multipart/form-data">
      <table cellpadding="0" cellspacing="0" border="0" width="100%">
          <tr>
            <td width="23%" class="body"> Name</td>
            <td width="3%" class="body">:</td>
            <td width="74%"><input type="text" name="strname" class="textfield"></td>
        </tr>
        <tr><td style="height:3px"></td></tr>
        <tr>
            <td width="23%" class="body"> Address</td>
            <td width="3%" class="body">:</td>
            <td width="74%"><textarea cols="16" name="straddress"></textarea></td>
        </tr>
        <tr><td style="height:3px"></td></tr>
        <tr>
            <td width="23%" class="body"> City</td>
            <td width="3%" class="body">:</td>
            <td width="74%"><input type="text" name="strcity" class="textfield"></td>
        </tr>
        <tr><td style="height:3px"></td></tr>
        <tr>
            <td width="23%" class="body"> State</td>
            <td width="3%" class="body">:</td>
            <td width="74%"><input type="text" name="strstate" class="textfield"></td>
        </tr>
        <tr><td style="height:3px"></td></tr>
        <tr>
            <td width="23%" class="body"> Contact No</td>
            <td width="3%" class="body">:</td>
            <td width="74%"><input type="text" name="strno" class="textfield"></td>
        </tr>
        <tr><td style="height:3px"></td></tr>
        <tr>
            <td width="23%" class="body"> Email</td>
            <td width="3%" class="body">:</td>
            <td width="74%"><input type="text" name="stremail" class="textfield"></td>
        </tr>
        <tr><td style="height:3px"></td></tr>
        <tr>
            <td width="23%" class="body"> Comments</td>
            <td width="3%" class="body">:</td>
            <td width="74%"><textarea cols="16" name="strcomments"></textarea></td>
        </tr>
        <tr><td style="height:3px"></td></tr>
        <tr>
            <td width="23%" class="body"> Resume</td>
            <td width="3%" class="body">:</td>
            <td width="74%"><input type="file" name="strresume"></td>
        </tr>
        <tr><td style="height:10px"></td></tr>
        <tr>

        </tr>

      </table>   
     </form>

</td>
    </tr>
    <tr>
      <td colspan="2" align="center"> </td>
  </tr>
    </table>
</body>
</html>
';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);
?>

I'll assume the form is submitted from a website, and that you're not trying to create a submittable form in an email. To copy the data submitted in the form, $_POST[""]; would surely be the best way to obtain the data. Obviously the data wouldn't be manipulatable once the email has arrived in the recipient's inbox but, as I say, I'm assuming you're not trying to create a form which can be submitted from an email.

Your form on the website was fine:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />


<title>Untitled Document</title>
</head>

<body style="padding:3px; margin:0px;" bgcolor="#FFFFFF">
<table cellpadding="0" cellspacing="0" border="0" width="440">

<tr><td style="height:10px"></td></tr>
<tr>
  <td colspan="2" style="text-align:justify; line-height:15px;" class="body">

  <form name="frm" method="POST" action="careersuccess.php" enctype="multipart/form-data">
  <table cellpadding="0" cellspacing="0" border="0" width="100%">
      <tr>
        <td width="23%" class="body"> Name</td>
        <td width="3%" class="body">:</td>
        <td width="74%"><input type="text" name="strname" class="textfield"></td>
    </tr>
    <tr><td style="height:3px"></td></tr>
    <tr>
        <td width="23%" class="body"> Address</td>
        <td width="3%" class="body">:</td>
        <td width="74%"><textarea cols="16" name="straddress"></textarea></td>
    </tr>
    <tr><td style="height:3px"></td></tr>
    <tr>
        <td width="23%" class="body"> City</td>
        <td width="3%" class="body">:</td>
        <td width="74%"><input type="text" name="strcity" class="textfield"></td>
    </tr>
    <tr><td style="height:3px"></td></tr>
    <tr>
        <td width="23%" class="body"> State</td>
        <td width="3%" class="body">:</td>
        <td width="74%"><input type="text" name="strstate" class="textfield"></td>
    </tr>
    <tr><td style="height:3px"></td></tr>
    <tr>
        <td width="23%" class="body"> Contact No</td>
        <td width="3%" class="body">:</td>
        <td width="74%"><input type="text" name="strno" class="textfield"></td>
    </tr>
    <tr><td style="height:3px"></td></tr>
    <tr>
        <td width="23%" class="body"> Email</td>
        <td width="3%" class="body">:</td>
        <td width="74%"><input type="text" name="stremail" class="textfield"></td>
    </tr>
    <tr><td style="height:3px"></td></tr>
    <tr>
        <td width="23%" class="body"> Comments</td>
        <td width="3%" class="body">:</td>
        <td width="74%"><textarea cols="16" name="strcomments"></textarea></td>
    </tr>
    <tr><td style="height:3px"></td></tr>
    <tr>
        <td width="23%" class="body"> Resume</td>
        <td width="3%" class="body">:</td>
        <td width="74%"><input type="file" name="strresume"></td>
    </tr>
    <tr><td style="height:10px"></td></tr>
    <tr>

    </tr>

  </table>   
 </form>

</td>
</tr>
<tr>
  <td colspan="2" align="center"> </td>
</tr>
</table>
</body>
</html>

Your file careersuccess.php would then need to include something like:

<?php
// multiple recipients
$to  = 'demo@localhost.com' . ', '; // note the comma
$to .= 'demo@localhost.com';

// subject
$subject = 'Birthday Reminders for August';

$strName = $_POST["strname"]; //assigns strname from form to PHP variable
$strAddress = $_POST["straddress"];
$strCity = $_POST["strcity"];
$strState = $_POST["strstate"];
$strNumber = $_POST["strnumber"];
$strEmail = $_POST["stremail"];
$strComments = $_POST["strcomments"];
$strResume = $_POST["strresume"];
$lineBreak = "<br />\n\"; //adds carriage return to break up your message

$message = "Name: ".$strName.$lineBreak."Address: ".$strAddress.$lineBreak."City: ".$strCity.$lineBreak."State: ".$strState.$lineBreak...for the rest of your variables;

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);
?>

That will result in the submitted values of the form being copied in to the email in the $message variable for the mail() function.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM