我试图将表单数据发送到我的电子邮箱但没有成功。当用户点击"提交"按钮(并在验证后)数据字段将发送到我的电子邮件,用户会看到一条消息"感谢您与我们联系"而不是表单字段。我是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工作?
答案 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'] )