2017-02-19 5 views
0

Форма контакта PHP отправляет закодированный текст по электронной почте. В электронном письме содержится вложение и некоторый текст из полей ввода. Сообщение должно быть декодировано до его отправки. Как я могу декодировать "$message" с правильным текстом, который вводится?Контактная форма PHP отправляет закодированный текст по электронной почте

Пожалуйста, посмотрите на код ниже:

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 = '[email protected]'; //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\r\n"; 
    $headers .= "From:" . $from_email . "\r\n"; 
    $headers .= "Reply-To: " . $reply_to_email . "" . "\r\n"; 
    $headers .= "Content-Type: multipart/mixed; boundary = $boundary\r\n\r\n"; 

    //plain text 
    $body = "--$boundary\r\n"; 
    $body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n"; 
    $body .= "Content-Transfer-Encoding: base64\r\n\r\n"; 
    $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\r\n"; 
    $body .= "Content-Type: $file_type; name=" . $file_name . "\r\n"; 
    $body .= "Content-Disposition: attachment; filename=" . $file_name . "\r\n"; 
    $body .= "Content-Transfer-Encoding: base64\r\n"; 
    $body .= "X-Attachment-Id: " . rand(1000, 99999) . "\r\n\r\n"; 
    $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.'); 
    } 
} 

}

+0

Что ваш вопрос/проблема? :) – Roman

ответ

0

Вы пробовали настройки типа контента?

$headers .= "Content-Type: text/html;"; 
+0

Еще нет .. Позвольте мне проверить :) –

+0

@AmitKollolDey awesome позволяет надеяться, что это сработает! –

+0

Я установил это в header.But $ headers. = "Content-Type: multipart/mixed; border = $ border \ r \ n \ r \ n"; и $ headers. = "Content-Type: text/html;"; работаю вместе? Мне нужно отправить вложение также с текстом –

0

Измененный к этому и что работал спасибо :)

 $headers = "MIME-Version: 1.0\r\n"; 
     $headers .= "From:" . $from_email . "\r\n"; 
     $headers .= "Reply-To: " . $reply_to_email . "" . "\r\n"; 
     $headers .= "Content-Type: multipart/alternative; boundary = $boundary\r\n\r\n"; 

     //plain text 
     $body = "--$boundary\r\n"; 
     $body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n"; 
     $body .= "Content-Transfer-Encoding: base64\r\n\r\n"; 
     $body .= "\n First Name:" . $sender_fname; 
     $body .= "\n Last Name:" . $sender_lname; 
     $body .= "\n Phone:" . $sender_phone; 
     $body .= "\n Message:" .$message; 
     $body .= chunk_split(base64_encode()); 
Смежные вопросы