2016-11-25 165 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..'; 
    } 
} 
?> 

每个人都应该先消毒用户输入明显。