2015-04-25 97 views
0

我在这里用PHP发送电子邮件。随着文本,啤酒其他领域一切工作正常。问题是上传文件。 一切看起来都不错。即使是文件电子邮件的功能也是完美的。但消息中没有任何提示。 当我点击“Wyślijwiadomość”(发送)时,我收到有关上传文件问题的消息。 enyone知道出了什么问题吗?PHP - 上传文件[POST]

<?php 
 
//--- początek formularza --- 
 
if(empty($_POST['submit'])) { 
 
?> 
 

 
\t \t  <form action="" method="post"> 
 
         <table class="col-md-10 col-sm-12 col-xs-12"> 
 
          <tr> 
 
           <td class="col-md-2">NAZWISKO:<br /><br/></td> 
 
           <td><input type="text" name="formName" /></td> 
 
          </tr> 
 
\t \t \t <tr> 
 
          <td class="col-md-2">E-MAIL:<br /><br/></td> 
 
          <td><input type="text" name="formEmail"/></td> 
 
         </tr> 
 
         <tr> 
 
          <td class="col-md-2">ZAŁĄCZ KOSZTORYS:<br /><br/></td> 
 
          <td><input type="file" name="formFile" /></td> 
 
         </tr> 
 
         <tr> 
 
          <td class="formularzTresc col-md-2">TREŚĆ:<br /><br/></td> 
 
          <td><textarea name="formText"></textarea></td> 
 
         </tr> 
 
         <tr> 
 
          <td></td> 
 
          <td><p align="right"><input type="submit" name="submit" value="Wyślij wiadomość" /><p></td> 
 
         </tr> 
 
         </table> 
 
        </form> 
 
<?php 
 
} else { 
 

 
//dane adresata 
 
$email = '#'; 
 

 
//dane z formularza 
 
$formName = $_POST['formName']; 
 
$formEmail = $_POST['formEmail']; 
 
$formText = $_POST['formText']; 
 
$formFile = $_POST['formFile']; 
 

 
if(!empty($formName) && !empty($formEmail) && !empty($formText)) { 
 

 
//--- początek funkcji weryfikującej adres e-mail --- 
 
function checkMail($checkmail) { 
 
    if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) { 
 
    if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){ 
 
     return true; 
 
     }else{ 
 
     return false; 
 
     } 
 
    } else { 
 
    return false; 
 
    } 
 
} 
 
//--- koniec funkcji --- 
 
if(checkMail($formEmail)) { 
 
    //dodatkowe informacje: ip i host użytkownika 
 
    $ip = $_SERVER['REMOTE_ADDR']; 
 
    $host = gethostbyaddr($_SERVER['REMOTE_ADDR']); 
 
    
 
    //tworzymy szkielet wiadomości 
 
    //treść wiadomości 
 
    $mailText = "Treść wiadomości:\n$formText\nOd: $formName, $formEmail, $formFile ($ip, $host)"; 
 
    
 
    //adres zwrotny 
 
    $mailHeader = "From: $formName <$formEmail>\r\n"; 
 
\t $mailHeader .= "Content-type: text/plain; charset=utf-8\r\n"; 
 

 
     $target_path = "../przeslanePliki"; 
 
     $target_path = $target_path . basename($_FILES['formFile']['name']); 
 
if(move_uploaded_file($_FILES['formFile']['tmp_name'], $target_path)) { 
 
    echo "The file ". basename($_FILES['formFile']['name']). 
 
    "Plik został wysłany"; 
 
     
 
} else{ 
 
    echo "Wystąpił problem z przesłaniem pliku. Prosimy spróbować ponownie."; 
 
} 
 
\t 
 
    //funkcja odpowiedzialna za wysłanie e-maila 
 
    @mail($email, 'Pytanie do eksperta', $mailText, $mailHeader) or die('Błąd: wiadomość nie została wysłana'); 
 
    
 
    //komunikat o poprawnym wysłaniu wiadomości 
 
    echo 'Wiadomość została wysłana'; 
 
} else { 
 
    echo 'Adres e-mail jest niepoprawny'; 
 
} 
 

 
} else { 
 
    //komunikat w przypadku nie powodzenia 
 
    echo 'Wypełnij wszystkie pola formularza'; 
 
} 
 

 
//--- koniec formularza --- 
 
} 
 
?>

+2

什么是* exact *错误消息? –

+0

我不知道,我不知道如何写日志到文件或某事。 我知道这里的其他部分工作: if(move_uploaded_file($ _ FILES ['formFile'] ['tmp_name'],$ target_path)){ 但是,感谢下面的人我解决了这个问题,但有一个新的一个现在如果工作正常,那里有一个信息,该文件已发送,但没有在我的邮箱附件只是一个没有它的短信。 – Aviene

回答

1

形式也需要以下属性:ENCTYPE = “多部分/格式数据”。它指定在提交表单时使用哪种内容类型

<form action="" method="post" enctype="multipart/form-data"> 
+0

好吧,现在我有一个信息,该文件已被发送,但没有附件在我的邮箱中的邮件:/ – Aviene

+0

您更改$ formFile = $ _POST ['formFile']; to $ formFile = $ _FILES ['formFile']; – Saty

+0

我改变了它,但仍然没有工作。电子邮件发送但没有附加。 – Aviene