2017-10-07 138 views
1

我有一個彈出窗體,它在提交後發送一封電子郵件。它一切正常。我正在嘗試爲要添加的文檔添加3個上傳文件字段。我試圖使用輸入類型=「文件」沒有運氣。我已經按照要求用我的整個代碼編輯了這個問題。我在底部添加了發送郵件的代碼發送帶有多個附件和JavaScript Ajax請求的電子郵件

表單工作正常。我只是錯過了這3個領域的文件上傳。

我的javascript:

<script language="javascript"> 
function validate(){ 
    var f=document.formED; 
    if(f.idnumber.value==''){ 
     alert('ID Number is required'); 
     f.idnumber.focus(); 
     return false; 
    } 
    /** doing the same for each field => remove here **/ 

    //f.command.value='btn1'; 
    //f.submit(); 

} 
    function showHide(){ 
    var f=document.formED; 
    if(f.fullnames.value==''){ 
     f.fullnames.focus(); 
     return false; 
    } 
    /** doing the same for each field => remove here **/ 

    //create an object reference to the div containing images 
    var oimageDiv=document.getElementById('searchingimageDiv') 
    //set display to inline if currently none, otherwise to none 
    oimageDiv.style.display=(oimageDiv.style.display=='none')?'inline':'none' 
    } 
</script> 
<div class="col-md-8"> 
    <div class="panel panel-white"> 
     <!-- Removed the irrelevant HTML content for this question --> 
     <div class="panel-body"> 
      <form onsubmit="return validate()" autocomplete="off" name="formED" action="#" method="post" role="form"> 
       <!-- Removed the irrelevant HTML content for this question --> 

       <div class="form-group"> 
        <label for="exampleInputEmail1">License Disk Copy:(Please press control while selecting to choose 
         multiple images)</label> 
        <input type="file" name="multiple_files[1]" multiple="multiple"> 

       </div> 

       <div class="form-group"> 
        <label for="exampleInputEmail1">Picture Of Damage:(Please press control while selecting to choose 
         multiple images)</label> 
        <input type="file" name="multiple_files[2]" multiple="multiple"> 
       </div> 

       <div class="form-group"> 
        <label for="exampleInputEmail1">License Copy: (Please press control while selecting to choose 
         multiple images)</label> 
        <input type="file" name="multiple_files[3]" multiple="multiple"> 
       </div> 

       <!-- Removed the irrelevant HTML content for this question --> 
       <button type="submit" name="newClient" class="btn btn-info" onclick="showHide()">Submit <i 
          class="fa fa-check" aria-hidden="true"></i></button> 
      </form> 
     </div> 
    </div> 
</div> 

發送郵件的PHP:

<?php 
$to = '[email protected]****'; 
$subject = "New Assessment Request has been submitted by ".$fullnames; 
// Get HTML contents from file 
$htmlContent = '<div style="font-family:HelveticaNeue-Light,Arial,sans- 
serif;background-color:#FFFFFF"><!-- Removed the irrelevant HTML content for this question --> 
</div>'; 

// Set content-type for sending HTML email 
$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 

// Additional headers 
$headers .= 'From: Digiteks Assessment Request<[email protected]****>' . "\r\n"; 

// Send email 
if(mail($to,$subject,$htmlContent,$headers)): 

else: 
//$errorMsg = 'We are unable to send you a mail, possible your email is a scam..'; 
endif; 
?>   
+0

對不起一段時間後,工作的工作,但我沒有看到的部分,你發送的形式向服務器 – Webdesigner

+0

隨着'郵件()'這將做一份艱苦的工作。嘗試PHPMailer(請參閱我的答案)。 – Webdesigner

回答

1

通常你需要添加enctype="multipart/form-data"from領域。如果您將multiple屬性添加到您的input字段,則用戶可以一次選擇多個文件,或者使用3個單一輸入字段進行選擇。 type="file"是正確的:

<form method="POST" action="/upload" accept-charset="UTF-8" enctype="multipart/form-data"> 
    <input type="file" name="multiple_files[]" multiple="multiple"> 
    <input type="file" name="single_file1"> 
    <input type="file" name="single_file2"> 
    <input type="file" name="single_file3"> 
    <input value="Upload" type="submit"> 
</form> 

enctype="multipart/form-data"部分是在你的代碼丟失,如果你不使用Ajax。您的字段名稱也存在語法錯誤。它是multiple_files1[]multiple_files[1][] 不是multiple_files[1]

在你的mail()函數中,你不處理這些文件,所以即使其餘部分是正確的,你根本就不會發送它,並且使用mail()這很難做到。從這裏

嘗試PHPMailer的腳本:http://github.com/PHPMailer/PHPMailer
但如果你真的想與mail()做這裏是一個教程,你怎麼可以這樣做:http://webcheatsheet.com/php/send_email_text_html_attachment.php

因爲你不同意Ajax代碼(如jQuery的阿賈克斯),我無法檢查你的JavaScript代碼是否有錯誤。

+0

其阿賈克斯先生對不起, – RedZ

+0

我已經添加了代碼先生 – RedZ

+0

好吧,先生其所有我在那裏有錯誤的PHP代碼。 – RedZ

0

我得到了它的頭和MIME

<?php 

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

if(isset($_FILES) && (bool) $_FILES) { 

$allowedExtensions = array("pdf","doc","docx","gif","jpeg","jpg","png","rtf","txt"); 

$files = array(); 
foreach($_FILES as $name=>$file) { 
    $file_name = $file['name']; 
    $temp_name = $file['tmp_name']; 
    $file_type = $file['type']; 
    $path_parts = pathinfo($file_name); 
    $ext = $path_parts['extension']; 
    if(!in_array($ext,$allowedExtensions)) { 
     die("File $file_name has the extensions $ext which is not allowed"); 
    } 
    array_push($files,$file); 
} 

// email fields: to, from, subject, and so on 
$to = "***"; 
$from = "***"; 
$subject ="New Assessment Request"; 
$message = "Test Message"; 

$headers = "From: $from"; 

// boundary 
$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

// headers for attachment 
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; 

// multipart boundary 
$message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; 
$message .= "--{$mime_boundary}\n"; 

// preparing attachments 
for($x=0;$x<count($files);$x++){ 
    $file = fopen($files[$x]['tmp_name'],"rb"); 
    $data = fread($file,filesize($files[$x]['tmp_name'])); 
    fclose($file); 
    $data = chunk_split(base64_encode($data)); 
    $name = $files[$x]['name']; 
    $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$name\"\n" . 
    "Content-Disposition: attachment;\n" . " filename=\"$name\"\n" . 
    "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; 
    $message .= "--{$mime_boundary}\n"; 
} 
// send 

    $ok = mail($to, $subject, $message, $headers); 
if ($ok) { 
    echo '<script language="javascript">'; 
    echo 'alert("Your Message successfully sent, we will get back to you ASAP.");'; 
    echo 'window.location.href="index.php";'; 
    echo '</script>'; 

} else { 
    echo "<p>mail could not be sent!</p>"; 
} 
} 

?> 
相關問題