使用PHP将表单数据发送到电子邮件

时间:2015-02-13 10:03:51

标签: php forms

我试图将表单数据发送到我的电子邮箱但没有成功。当用户点击"提交"按钮(并在验证后)数据字段将发送到我的电子邮件,用户会看到一条消息"感谢您与我们联系"而不是表单字段。我是PHP的新手,希望你们中的一个能帮助我。

这是我的HTML表单:

    <form id="contactForm" method="post" action="contact.php" onsubmit="return validateForm()">
            <input type="text" name="name" id="name" placeholder="Full Name">

            <input type="email" name="email" id="email" placeholder="E-mail Address">

            <input type="text" name="phone" id="phone" placeholder="Phone Number">

            <input type="text" name="company" id="company" placeholder="Company">

            <textarea name="message" id="message" placeholder="Write Your Message Here..."></textarea>

            <input type="submit" value="SEND" id="submitForm">
</form>

这是我的PHP代码:

<?php

if($_POST["submit"]) {
    $recipient="myEmail@gmail.com";
    $subject="Message from Website";
    $sender=$_POST["name"];
    $senderEmail=$_POST["email"];
    $senderPhone=$_POST["phone"];
    $senderCompany=$_POST["company"];
    $message=$_POST["message"];

    $mailBody="Name: $sender\nEmail: $senderEmail\nPhone: $senderPhone\nCompany: $senderCompany\n\n$message";

    mail($recipient, $subject, $mailBody, "From: $sender <$senderEmail>");

$thankYou="<p>Thank you! Your message has been sent.</p>";
}

?>

我也有这个名为validateForm()的表单的JS验证函数,它可以正常工作。我是否需要在托管服务器上定义一些东西以使这个PHP工作?

3 个答案:

答案 0 :(得分:1)

将以下行添加到脚本顶部

error_reporting(E_ALL);
ini_set("display_errors", "On");

如果您的服务器未正确配置邮件,您将看到错误。 最好的做法是使用PHPMailer。有了它,您可以使用sendmail或任何SMTP服务器

答案 1 :(得分:0)

您是否尝试过使用像PHPMailer这样的东西?

https://github.com/PHPMailer/PHPMailer/

它是一个发送带有相应标题的电子邮件的类,并且易于使用和调试。

您还会发现,由于它具有相应的标头,因此垃圾邮件过滤器不会阻止它到达正确的目的地。

希望它有所帮助。

答案 2 :(得分:0)

使用此

<input type="submit" value="SEND" id="submit">

更新:

输入按钮的name="xx"属性用于为$ _POST或$ _GET数组传递的值提供变量名称

所以你需要在按钮html标签中添加name="submit",如此

<input type="submit" value="SEND" name="submit">

现在这个PHP语句会起作用,因为它会在$ _POST数组中看到一个名为'submit'的命名变量

if ( $_POST['submit'] )