-2

我只是想知道是否有人在这里看到任何错误,代码执行但我从未收到电子邮件,有什么建议吗?

$to = $_POST['to_email'];
$subject = $_POST['subject'];
$message='<p><b>Message:</b> '.str_replace("\n.", "\n..", $_POST['message']).'</p>';

$headers = "From: " . strip_tags($_POST['from_email']) . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['from_email']) . "\r\n".
        'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
4

2 回答 2

1

mail() 函数只是使用 sendmail unix/linux 命令来发送邮件。如果配置错误,将无法使用

如果您有权访问您的 php ini,请查看 [mail] 部分

smtp = SMTPSERVER (windows)
smtp_port = 25    (Windows)
sendmail_path= (unix)
于 2012-12-08T22:11:41.617 回答
0

这将取决于 PHP 的设置。

PHP 可以做很多事情 - 最常见的是将电子邮件排队到本地邮件服务器(在 linux 上很常见,在 windows 上较少)或与外部邮件中继通信并在那里排队(通常需要身份验证,除非它是一个罕见的开放式继电器)。也可以写入文件。

mail()如果没有警告,该函数只保证电子邮件已排队到 php.ini 文件中指定的位置。

首先要做的是检查邮件是否报告成功...

$Success = @mail($to, $subject, $message, $headers);
if(!$Success) {
    print "Failed to queue email";
}

您需要做的下一件事是检查您的php.ini配置以查看电子邮件的配置方式。确保它指向具有正确凭据的有效邮件服务器。如果您在 linux 上并使用像postfix这样的本地邮件服务器,请检查它是否正在运行(/etc/init.d/postfix status取决于您的发行版)

正如@FlorianKasper 所述,SMTP 作为选项仅在 Windows 上可用。如果您能准确说明您使用的是什么操作系统,我们可能会提供进一步的帮助。

于 2012-12-08T22:12:54.207 回答