首页 > 解决方案 > 提交时表单未发送电子邮件。我错过了什么?

问题描述

我对 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>

它没有抛出任何错误,我只是没有收到电子邮件。我检查了垃圾邮件,尝试了单独的电子邮件,但我遗漏了一些东西。非常感谢你的帮助!

标签: phphtmlforms

解决方案


您应该首先检查您的服务器是否真的在发送邮件,稍微更改您的代码:

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"]);
    }
}

查看 mail() 函数的PHP 文档

返回值

TRUE如果邮件被成功接受投递,则返回,FALSE否则返回。

需要注意的是,仅仅因为邮件被接受投递,并不意味着邮件实际上会到达预定目的地

可能服务器本身没有正确配置为发送电子邮件。是共享主机吗?或者类似的东西?

亲切的问候!


推荐阅读