【问题标题】:Mail send successfully, but not delivered using PHP Mail function邮件发送成功,但未使用 PHP Mail 功能发送
【发布时间】:2016-02-18 15:53:33
【问题描述】:

我正在使用php邮件功能发送邮件,当发送电子邮件时,它说邮件发送成功,但邮件未送达。我已经使用 gmail pop3/SMTP/Imap 设置配置了我的服务器。我正在使用 Ubuntu,这是我的代码:

<?php
    $name = "ali";
    $email ="hello";
    $message = "adasdasfasf";
    $from = 'From: from@gmail.com'; 
    $to = 'to@gmail.com'; 
    $subject = 'Customer Inquiry';
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";
        $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html\r\n";
    $headers = 'From: From: from@gmail.com' . "\r\n" .
    'Reply-To: From: from@gmail.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();




            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>'; 
            }

    ?>

【问题讨论】:

  • 您的邮件服务器日志中有什么内容?
  • phpMail 函数我使用的是错误日志消息未定义变量:第 10 行 /var/www/html/mailSend.php 中的标题
  • @DeAlion 这是来自您的网络服务器错误日志的错误(如 nginx/apache/lighttpd)。查看您的 SMTP 服务器错误日志。使用普通sendmail时,一般位于/var/log/mail.log/var/log/maillog下。

标签: ubuntu php terminal


【解决方案1】:

你的 PHP 代码不好:

$headers .= "MIME-Version: 1.0\r\n";

在这里,首先您附加到一个未设置的变量 $headers (因此出现错误)。

$headers .= "Content-type: text/html\r\n";

现在你扩展它。

$headers = 'From: From: from@gmail.com' . "\r\n" .

现在你又把它全部扔掉了,覆盖了它的内容,删除了之前设置的标题。

所以它不会发送,因为您的 PHP 代码会产生不完整的标头。

这更多的是 StackOverflow,但代码应该是:

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html\r\n";
$headers .= 'From: from@gmail.com' . "\r\n" .

【讨论】:

  • 你能写出正确的代码吗,这会非常好,很有帮助,也更容易理解
【解决方案2】:

第一次使用 $headers 变量是:

$headers .= "MIME-Version: 1.0\r\n";

使用 .= 它希望将其添加到该变量的早期使用中,而您没有。将该行更改为:

$headers = "MIME-Version: 1.0\r\n";

初始化它,然后请分享结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多