dstbtam8732 2017-02-19 18:25
浏览 55

PHP联系表单正在电子邮件正文中发送编码文本

PHP contact form is sending encoded text on email body. The email contains an attachment and some text from input fields. The message must be decoded before its sent. How can I decode the "$message" with right text that is inputted?

Please have a look at the code given below:

if (isset($_POST['submit'])) {
if ($_POST['email'] == '' || $_FILES['file_upload'] == '' || $_POST["fname"] == '' || $_POST["lname"] == '' || $_POST["message"] == '') {
    echo '<p class="red-info">Please Fill All The Fields</p>';

} else {

    $from_email      = $_POST['email']; //from mail, it is mandatory with some hosts
    $recipient_email = 'myemail@gmail.com'; //recipient email (most cases it is your personal email)

    //Capture POST data from HTML form and Sanitize them,
    $sender_fname   = filter_var($_POST["fname"], FILTER_SANITIZE_STRING); //sender name
    $sender_lname   = filter_var($_POST["fname"], FILTER_SANITIZE_STRING); //sender name
    $sender_phone_1 = filter_var($_POST["phone_1"], FILTER_SANITIZE_STRING); //sender name
    $sender_phone_2 = filter_var($_POST["phone_2"], FILTER_SANITIZE_STRING); //sender name
    $sender_phone_3 = filter_var($_POST["phone_3"], FILTER_SANITIZE_STRING); //sender name
    $sender_phone   = $sender_phone_1 . ' ' . $sender_phone_2 . ' ' . $sender_phone_3; //sender name
    $reply_to_email = filter_var($_POST["email"], FILTER_SANITIZE_STRING); //sender email used in "reply-to" header
    $subject        = 'Contact Form'; //get subject from HTML form
    $message        = filter_var($_POST["message"], FILTER_SANITIZE_STRING); //message

    /* //don't forget to validate empty fields
    if(strlen($sender_name)<1){
    die('Name is too short or empty!');
    }
    */

    //Get uploaded file data
    $file_tmp_name = $_FILES['file_upload']['tmp_name'];
    $file_name     = $_FILES['file_upload']['name'];
    $file_size     = $_FILES['file_upload']['size'];
    $file_type     = $_FILES['file_upload']['type'];
    $file_error    = $_FILES['file_upload']['error'];

    if ($file_error > 0) {
        die('Upload error or No files uploaded');
    }
    //read from the uploaded file & base64_encode content for the mail
    $handle  = fopen($file_tmp_name, "r");
    $content = fread($handle, $file_size);
    fclose($handle);
    $encoded_content = chunk_split(base64_encode($content));

    $boundary = md5("sanwebe");
    //header
    $headers  = "MIME-Version: 1.0
";
    $headers .= "From:" . $from_email . "
";
    $headers .= "Reply-To: " . $reply_to_email . "" . "
";
    $headers .= "Content-Type: multipart/mixed; boundary = $boundary

";

    //plain text
    $body = "--$boundary
";
    $body .= "Content-Type: text/plain; charset=ISO-8859-1
";
    $body .= "Content-Transfer-Encoding: base64

";
    $body .= "<br />First Name:" . $sender_fname;
    $body .= "<br />Last Name:" . $sender_lname;
    $body .= "<br />Phone:" . $sender_phone;
    $body .= "<br />Message:";
    $body .= chunk_split(base64_encode($message));

    //attachment
    $body .= "--$boundary
";
    $body .= "Content-Type: $file_type; name=" . $file_name . "
";
    $body .= "Content-Disposition: attachment; filename=" . $file_name . "
";
    $body .= "Content-Transfer-Encoding: base64
";
    $body .= "X-Attachment-Id: " . rand(1000, 99999) . "

";
    $body .= $encoded_content;

    $sentMail = mail($recipient_email, $subject, $body, $headers);
    if (isset($sentMail)) //output success or failure messages
        {
        echo '<p class="green-info">Your Email Has Been Submitted!We will contact soon.</p>';
        echo "<script>document.contact.reset();</script>";
        header("location: contect.php");
    } else {
        die('Could not send mail! Please check your PHP mail configuration.');
    }
}

}

  • 写回答

2条回答 默认 最新

  • duanjia9577 2017-02-19 18:29
    关注

    Have you tried setting the content type ?

    $headers .= "Content-Type: text/html;";
    
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!