PHP联系表 - 没有发送电子邮件,是否实际提交?

时间:2017-09-07 23:02:52

标签: php html html5 forms contact

这可能看起来像是一个非常业余的东西,但是当涉及到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上托管?

提前致谢

编辑:好的,我忘了提到这个问题:电子邮件还没有发送,所以我实际上并不知道成功是否有效,我尝试过不同的电子邮件地址,检查垃圾邮件整个沙邦 - 所以我努力弄清楚它上面出了什么问题

1 个答案:

答案 0 :(得分:0)

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

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

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