我对php还是很陌生,我仍在学习基础知识。我创建了一个简单的“与我们联系”表单,该表单应将数据发送到电子邮件地址。但是,我没有收到电子邮件。 “谢谢”消息正确显示,但是从不发送电子邮件。
不幸的是,我在php方面的知识很薄,因此我很难解决这一问题。我确实仅用一个字段就成功编写了一种简单的表单。那是正确发送。由于此表单具有多个字段,因此似乎有些不足。
<?php
if($_POST["submit"]) {
$recipient="myemail@gmail.com";
$subject="Contact Form";
$sender=$_POST["sender"];
$senderEmail=$_POST["senderEmail"];
$message=$_POST["message"];
$mailBody="Name: $sender\nEmail: $senderEmail\n\n$message";
mail($recipient, $subject, $mailBody, "From: $sender <$senderEmail>");
$thankYou="<p>Thank you! Your message has been sent.</p>";}
?>
<?=$thankYou ?>
<form method="post" action="company.php">
<input class="contact" type="text" name="sender"
placeholder="First Name" size="25">
<input class="contact" type="text" name="last"
placeholder="Last Name" size="25">
<input class="contact" type="text" name="title"
placeholder="Title" size="25">
<input class="contact" type="text" name="business"
placeholder="Business" size="25">
<input class="contact" type="email" name="senderEmail"
placeholder="Email" size="25">
<input class="contact" type="text" name="phone"
placeholder="phone" size="25">
<textarea class="contact" name="message"
placeholder="How can we help you?" rows="4" cols="56"></textarea>
<input class="blu-btn" type="submit" name="submit"
value="Send Message">
</form>
它没有引发任何错误,我只是没有收到电子邮件。我检查了垃圾邮件,尝试了一封单独的电子邮件,我丢失了一些东西。非常感谢您的帮助!
答案 0 :(得分:0)
您应该首先检查服务器是否确实在发送邮件,并稍作更改:
if($_POST["submit"])
{
$recipient="myemail@gmail.com";
$subject="Contact Form";
$sender=$_POST["sender"];
$senderEmail=$_POST["senderEmail"];
$message=$_POST["message"];
$mailBody="Name: $sender\nEmail: $senderEmail\n\n$message";
if (mail($recipient, $subject, $mailBody, "From: $sender <$senderEmail>"))
{
echo "<p>Thank you! Your message has been sent.</p>";
}
else
{
print_r(error_get_last()["message"]);
}
}
看看PHP Documentation for mail() function
返回值
如果成功接受以下邮件,则返回
TRUE
投放,否则FALSE
。请务必注意,因为该邮件已被接受 传递,并不意味着邮件实际上会到达预期的位置 目的地。
服务器本身可能未正确配置为发送电子邮件。 是共享主机吗?还是类似的东西?
亲切的问候!
答案 1 :(得分:0)
您在其中运行此程序的环境与众不同。邮件可能配置不正确,或者某些垃圾邮件过滤器阻止了它。在这种情况下,您的代码中没有任何内容可以有所作为。
如果您可以控制服务器,并且知道如何操作,则可以检查邮件程序。如果仅限于编写代码,则还有其他选择。您可以使用SMTP并通过外部服务发送电子邮件。然后,您可以使用mailtrap.io捕获出站电子邮件。这是调试和确保代码正确的一种好方法。
如果您想尝试其他邮件客户端,则可以使用SwiftMailer。