【问题标题】:php mail form doesn't work [closed]php邮件表单不起作用[关闭]
【发布时间】:2014-01-23 00:32:17
【问题描述】:

我想我解决了这个问题。这是原版:

<?php
    if(isset($_POST['email'])) {

    $email = $_POST['email'];
    $name = $_POST['name'];
    $message = $_POST['message'];;
    $subject = $email = $_POST['subject'];;

    $email_to = $email;
    $header = 'From: 1totheN <website@1tothen.com>' . "\r\n";
    function clean_text($string) {
    $bad = array("content-type","bcc:","to:","cc:","href");
    return str_replace($bad,"",$string);
    }
    $email_message .= "Name: ".clean_text($email)."\n";
    $email_message .= "Email: ".clean_text($email)."\n";
    $email_message .= "Message: ".clean_text($message)."\n";
    @mail($email_to, $subject, $email_message, $header);
    echo "Your message has been sent.";

}
?>

这是 HTML 页面上的标记:

<form class="contact-form" id="subscribeForm" action="mail.php" method="post">
       <input type="text" name="name" class="required" placeholder="YOUR NAME">
       <input type="text" name="email" class="required email" placeholder="EMAIL ADDRESS">
       <input type="text" name="subject" class="required last" placeholder="SUBJECT">
       <textarea name="message" placeholder="YOUR MESSAGE"></textarea>
       <input type="submit" name="submit" value="SUBMIT YOUR MESSAGE">
       <h6 id="form_result">Your email will not be published.</h6>
</form>

这是解决方法:

$email_to = "webmail@1tothen.com";
$header = 'From: 1totheN <webmail@1tothen.com>' . "\r\n";
$email_message .= "Name: ".clean_text($name)."\n";

我认为这可以解决问题。我在 $email_to 字段中添加了一封电子邮件,并添加了 $name。似乎有效。

【问题讨论】:

  • 说得更具体一点,这行不通? $subject = $email = $_POST['subject'];;不正确,应该是 $subject = $_POST['subject'];
  • 你也可以发布你的&lt;form&gt;&lt;/form&gt; 吗?
  • @0n35 - 很确定这就是问题所在,为什么不将其发布为答案?
  • 这段代码充满了许多错误并且没有空字段检查。有人可以输入me@here 并且仍然会执行。 clean_text() 函数有什么用?它对域检查没有任何作用。你最好使用FILTER_VALIDATE_EMAIL

标签: php mail-form


【解决方案1】:

下面的现在可以工作了。这只是一些小的语法错误,你还有一些额外的;,这行是错误的,可能是一个错误:$subject = $email = $_POST['subject'];

我还将函数移到了if 语句之外……放在那里并没有错,只是看起来有点奇怪。

function clean_text($string) {
    $bad = array("content-type","bcc:","to:","cc:","href");
    return str_replace($bad,"",$string);
}

if(isset($_POST['email'])) {
    $email = $_POST['email'];
    $name = $_POST['name'];
    $message = $_POST['message'];
    $subject = $_POST['subject'];

    $email_to = $email;
    $header = 'From: 1totheN <website@1tothen.com>' . "\r\n";
    $email_message .= "Name: ".clean_text($email)."\n";
    $email_message .= "Email: ".clean_text($email)."\n";
    $email_message .= "Message: ".clean_text($message)."\n";
    @mail($email_to, $subject, $email_message, $header);
    echo "Your message has been sent.";
}
?>

【讨论】:

  • 谢谢@anthonygore,确实整理好了,但还不够。我刚刚在 $email_to 参数中输入了一封电子邮件,它已经奏效了!感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2014-07-05
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
相关资源
最近更新 更多