表单未在提交后发送电子邮件。我想念什么?

时间:2019-05-19 01:31:58

标签: php html forms

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

它没有引发任何错误,我只是没有收到电子邮件。我检查了垃圾邮件,尝试了一封单独的电子邮件,我丢失了一些东西。非常感谢您的帮助!

2 个答案:

答案 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