PHP邮件功能无法完成电子邮件发送

562
<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: yoursite.com';
    $to = 'contact@yoursite.com';
    $subject = 'Customer Inquiry';
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";

    if ($_POST['submit']) {
        if (mail ($to, $subject, $body, $from)) {
            echo '<p>Your message has been sent!</p>';
        } else {
            echo '<p>Something went wrong, go back and try again!</p>';
        }
    }
?>
我尝试创建一个简单的邮件表单。表单本身位于我的index.html页面上,但是它提交到一个单独的“谢谢您的提交”页面thankyou.php,在那里嵌入了上面的PHP代码。 代码可以成功提交,但从未发送电子邮件。我该如何解决这个问题?

3
您的程序在本地计算机还是网络主机上运行? - Tamil Selvan C
9
  1. 你确定它没有进入你的垃圾邮件文件夹吗?
  2. 你的计算机上配置了sendmail吗?
- Steven Moseley
它在一个实时主机上。它没有进入我的垃圾邮件...我不确定你所说的配置sendmail是否在我的盒子上,所以我假设没有? - user3818620
1
尝试发送而不使用 $from - Artem Ilchenko
我之前遇到过类似的问题,但它并不是由下面推荐答案中列出的任何错误引起的。这是因为我的 DNS 列出了另一个服务器作为授权邮件服务器,但 Web 服务器本身也配置为将自己识别为授权邮件服务器。因此,当 PHP mail() 发送电子邮件到自己的域时,它不会检查 DNS 记录以找到正确的邮件服务器,而只是将电子邮件转发给自己。我写了一篇关于这个问题的文章,详细介绍了解决方法:https://blog.terresquall.com/2021/04/php-mail-fails-send-emails-to-own-domain-email-addresses/ - John Doe
32个回答

-1

有几种可能性:

  1. 您面临服务器问题。服务器没有任何邮件服务器。因此,您的邮件无法工作,因为您的代码很好,并且邮件与类型一起工作。

  2. 您没有获取到发布的值。请使用静态值尝试您的代码。

  3. 使用SMTP邮件发送邮件...


-1

这可能是由于 $headers 中“From:”$email 地址的问题:

From: \"$name\" <$email>

为了尝试它,发送一封没有头部的电子邮件,例如:

mail('user@example.com', $subject, $message); 

如果是这种情况,尝试使用已经在你要从中发送邮件的系统中创建的电子邮件账户。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接