2017-06-29 15 views
0

s_names_emailフィールドは送信された電子メールには表示されず、添付ファイルとメッセージのみが表示されます。電子メールのすべてのフォームフィールドを表示するためのコードの変更をお手伝いください。PHPメールフォームはすべてのフォームフィールドをメールに送信しません

私は多くの投稿を見てきましたが、問題の答えを見つけることができないと思われて、援助をいただければ幸いです。

<?php 
if($_POST && isset($_FILES['file'])) { 
    $recepient_email = "[email protected]"; //recepient 
    $from_email   = "[email protected]_domain.com"; //from email using site domain. 
    $subject   = "Attachment email from your website!"; //email subject line 

    $sender_name = filter_var($_POST["s_name"], FILTER_SANITIZE_STRING); 
    //capture sender name 
    $sender_email = filter_var($_POST["s_email"], FILTER_SANITIZE_STRING); //capture sender email 
    $sender_message = filter_var($_POST["s_message"], FILTER_SANITIZE_STRING); //capture message 
    $attachments = $_FILES['file']; 

    //php validation 
    if(strlen($sender_name)<4){ 
     die('Name is too short or empty'); 
    } 
    if (!filter_var($sender_email, FILTER_VALIDATE_EMAIL)) { 
     die('Invalid email'); 
    } 
    if(strlen($sender_message)<4){ 
     die('Too short message! Please enter something'); 
    } 

    $file_count = count($attachments['name']); //count total files attached 
    $boundary = md5("sanwebe.com"); 

    if($file_count > 0){ //if attachment exists 
     //header 
     $headers = "MIME-Version: 1.0\r\n"; 
     $headers .= "From:".$from_email."\r\n"; 
     $headers .= "Reply-To: ".$sender_email."" . "\r\n"; 
     $headers .= "Content-Type: multipart/mixed; boundary = $boundary\r\n\r\n"; 

     //message 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 .= chunk_split(base64_encode($sender_message)); 

     //attachments 
     for ($x = 0; $x < $file_count; $x++) { 
      if(!empty($attachments['name'][$x])) { 
       if($attachments['error'][$x]>0) { //exit script and output error if we encounter any 
        $mymsg = array(
         1=>"The uploaded file exceeds the upload_max_filesize directive in php.ini", 
         2=>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form", 
         3=>"The uploaded file was only partially uploaded", 
         4=>"No file was uploaded", 
         6=>"Missing a temporary folder" 
        ); 
        die($mymsg[$attachments['error'][$x]]); 
       } 

       //get file info 
       $file_name = $attachments['name'][$x]; 
       $file_size = $attachments['size'][$x]; 
       $file_type = $attachments['type'][$x]; 

       //read file 
       $handle = fopen($attachments['tmp_name'][$x], "r"); 
       $content = fread($handle, $file_size); 
       fclose($handle); 
       $encoded_content = chunk_split(base64_encode($content)); //split into smaller chunks (RFC 2045) 

       $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; 
      } 
     } 
    } else { //send plain email otherwise 
     $headers = "From:".$from_email."\r\n". 
      "Reply-To: ".$sender_email. "\n" . 
      "X-Mailer: PHP/" . phpversion(); 
     $body = $sender_message; 
    } 

    $sentMail = @mail($recepient_email, $subject, $body, $headers); 
    if($sentMail) { //output success or failure messages 
     die('Thank you for your email'); 
    } else { 
     die('Could not send mail! Please check your PHP mail configuration.'); 
    } 
} 
?> 
+0

助けが必要なコードの部分を切り離すか、指摘してください。 – JoshKopen

答えて

0
$headers .= "Reply-To: ".$sender_email."" . "\r\n"; 

これは、多くの二重引用符ことを持っているべきですか?おそらくこのようなはずです:

$headers .= "Reply-To:" .$sender_email. "\r\n"; 
0

これを行うすべてのフォームフィールドを確認できますか?

<?php print_r($_POST); ?> 

すべてのフォームフィールドがnameのattrを持っている場合はダブルチェックして、上記印刷分野に一致する彼らのしている場合。

関連する問題