2016-11-25 162 views
-4

我即將寫一點html/php腳本。但我無法將數據從HTML表單輸入發送到任何電子郵件地址或任何文本文件。我已經在尋找可能的解決方案,但沒有爲我工作。瀏覽器重播了php腳本。但沒有郵件已發送。任何幫助將不勝感激。謝謝。Html/php電子郵件發送

+0

那麼,你想發送電子郵件? – BoeNoe

+0

你在本地服務器上嗎? – BoeNoe

+4

你的代碼在哪裏? –

回答

0

我覺得你的問題是如何與一些代碼處理表單數據,所以您可以發送電子郵件或寫的表單數據的文件。這是您看到客戶端服務器端之間的區別。 HTML是一種語言描述文件,在這裏你的形式:文本輸入name是要描述一個名稱,表單將在POST方法內發送其數據,等等。描述HTML的文件在您的瀏覽器中處理。而您的瀏覽器不會發送電子郵件或寫入數據......這就是爲什麼您應該使用服務器端語言(如PHP)來完成任務。 PHP很棒,可以幫助您處理數據並在不同的事件上運行......在您的情況下,非常適合接收數據,分析數據,然後通過郵件發送數據或將數據保存到文件中。

所以,現在你可能想要了解如何做到這一點......郵件有點棘手,因爲你可能需要配置諸如郵件服務器,認證等等。也許一個好的解決辦法是嘗試用谷歌帳戶或類似的東西...郵件什麼時候會做,你可以簡單地發送電子郵件,像這樣:

<?php 

$to  = '[email protected]'; 
$subject = 'Mail test'; 
$data = $_POST['name']; // if a `name` field exist and your form send its data through POST method 
mail($to, $subject, $data); 

寫東西到一個文件更簡單,它只請求讀取和/或寫入文件的權限。

<?php 

$file = 'path/to/file'; 
file_put_contents($file, $_POST['name'] . ' for example'); 

因此,這是全球範圍內的一切:

index.html HTML文件:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Form</title> 
    </head> 
    <body> 
     <form action="process.php" method="post"> 
      <input name="name" type="text" placeholder="Name" /> 
      <input type="submit" value="Process"> 
     </form> 
    </body> 
</html> 

process.php PHP文件

<?php 

/** 
* Testing data 
*/ 

if (!isset($_POST['name'])) { 
    die('No value `name` found'); 
} 

/** 
* Configuring process 
*/ 

$to  = '[email protected]'; 
$subject = 'Mail test'; 
$data = $_POST['name']; 

/** 
* Saving data 
*/ 

$res = file_put_contents(
    'data.txt', 
    $data."\r\n" 
); 

if ($res !== false) { 
    echo 'data saved'.PHP_EOL; 
} else { 
    echo 'error while saving data'.PHP_EOL; 
} 

/** 
* Sending email 
*/ 

$res = mail(
    $to, 
    $subject, 
    $data 
); 

if ($res === true) { 
    echo 'mail sent'; 
} else { 
    echo 'error while sending mail'.PHP_EOL; 
} 

我建議你閱讀mail()file_put_contents()單證,瞭解他們的行爲,萬一有錯誤... :)

0

不要忘記在<form>標籤actionmethod屬性。

內容的HTML文件的send.php

<form action="send.php" method="POST"> 
    <input type="text" name="name" placeholder="Typ your name..." /> 
    <input type="email" name="from" placeholder="Typ your e-mailaddress..." /> 
    <textarea name="message" placeholder="Typ your message..."></textarea> 
    <button type="submit">Send E-mail</button> 
</form> 

內容

<? 
if(isset($_POST)) { 
    $name = $_POST['name']; 
    $message = $_POST['message']; 
    $from = $_POSST['from']; 

    if(!empty($name) && !empty($message) { 
     $subject = 'message from '.$name; 

     $headers = "From: " . strip_tags($from) . "\r\n"; 
     $headers .= "Reply-To: ". strip_tags($from) . "\r\n"; 
     //$headers .= "CC: [email protected]\r\n"; 
     $headers .= "MIME-Version: 1.0\r\n"; 
     $headers .= "Content-Type: text/html; charset=UTF-8\r\n"; 

     // @SEE: http://php.net/manual/en/function.mail.php 
     if(mail('[YOUR-ADDRESS]', $subject, $message, $headers)) { 
      echo 'Thx 4 msg!'; 
     } 
     else { 
      echo 'Oh nooos, The msg was not send.'; 
     } 
    } 
    else { 
     echo 'You should provide the fields with some data..'; 
    } 
} 
?> 

每個人都應該先消毒用戶輸入明顯。