【问题标题】:PHP Contact Form - no emails sent, is it actually submitting?PHP 联系表 - 没有发送电子邮件,它实际上是在提交吗?
【发布时间】:2017-09-07 23:02:52
【问题描述】:

这可能看起来像个业余的东西,但在 php 方面我是个业余爱好者......

基本上,我为我所在的组织创建的网站需要联系表,因为我一直在努力学习,我更愿意自己编写代码,而不是仅仅获得一些插件。但是我的代码似乎不太好用。

也是第一篇文章,我很确定这不是重复的,因为它是不同的代码,我一直在这个网站上使用帖子来尝试让它工作但没有运气,所以最好发布我的代码希望脑细胞比我多的人能帮上忙

这是页面本身的 html:

<form method="post" action="contactengine.php">
    <label for="Name"><h2>Your Name:</h2></label>
    <input type="text" name="Name" id="Name" placeholder="Please Enter Your Name"/>

    <label for="Email"><h2>Your Email:</h2></label>
    <input type="email" name="Email" id="Email" placeholder="Please Enter Your Email Address"/>

    <label for="Message"><h2>Message:</h2></label><br />
    <textarea name="Message" rows="20" cols="20" id="Message"></textarea>

    <input type="submit" name="submit" value="Submit" class="submit-button" />
</form>

PHP:

<?php

    $EmailFrom = "webmaster@temporary.co.uk";
    $EmailTo = "webmaster@temporary.co.uk";
    $Subject = "Contact Form Submission";
    $Name = Trim(stripslashes($_POST['Name'])); 
    $Email = Trim(stripslashes($_POST['Email'])); 
    $Message = Trim(stripslashes($_POST['Message'])); 

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

    // validation
    $validationOK=true;
    if (!$validationOK) {
      print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
      exit;
    }

    // prepare email body text
    $Body = "";
    $Body .= "Name: ";
    $Body .= $Name;
    $Body .= "\n";
    $Body .= "Email: ";
    $Body .= $Email;
    $Body .= "\n";
    $Body .= "Message: ";
    $Body .= $Message;
    $Body .= "\n";

    // send email 
    $success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

    // redirect to success page 
    if ($success){
      print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
    }
    else{
      print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
    }
    ?>

我觉得很愚蠢,因为有大量关于创建工作联系表单的文献,但似乎没有一个有效

我托管在 1and1 上,如果这有什么不同?

提前致谢

编辑:好的,我忘了提到问题:电子邮件只是没有发送,所以我实际上不知道成功是否有效,我尝试了不同的电子邮件地址,检查了整个 shabang 的垃圾邮件 - 所以我我正在努力找出问题所在

【问题讨论】:

  • 究竟什么不起作用???哪里有问题?这是一个错误吗?这是什么?
  • 有什么错误吗?有日志吗? $success 的值是多少?
  • 仅供参考,而不是呈现 HTML 来执行重定向,请查看 header 函数。例如。 header('Location: contactthanks.php');
  • 忘记添加问题 - 我不知道表单是否正常工作,因为无论在 php 中输入什么地址,都没有发送电子邮件
  • 自己找出问题并不难。首先检查提交变量的值($name,$email)。如果它们为空,则提交的表单存在问题。如果这有效,请检查 $success 的值以了解电子邮件是否正确发送

标签: php html forms contact


【解决方案1】:

不要使用内置的mail 命令。您将希望使用 Swift Mailer 之类的东西作为 mail() 的替代品,并使用 mailgun.org 之类的邮件服务来发送邮件。

内置的mail 命令可能在服务器上被阻止。或者,由于您不是从设计用于发送电子邮件的服务器发送电子邮件,因此电子邮件可能会在 SMTP 级别被其他人的黑名单阻止。或者它们可能在您的垃圾邮件箱中。

您可能希望在您的服务器上安装 MailHog 并将其用作 SMTP 服务器来测试 mail() 命令是否甚至可以在服务器上运行。

【讨论】:

  • 谢谢,我一定会看看那些 - 可能会解释为什么电子邮件不发送,因为据我所知,这些字段设置正确
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 2015-06-25
  • 1970-01-01
  • 2019-09-04
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多