我只是想知道是否有人在这里看到任何错误,代码执行但我从未收到电子邮件,有任何建议吗?
$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);
答案 0 :(得分:1)
mail()函数只使用sendmail unix / linux命令发送邮件。如果配置错误,则无法正常工作
如果您有权使用php ini,请查看[mail]部分
smtp = SMTPSERVER (windows)
smtp_port = 25 (Windows)
sendmail_path= (unix)
答案 1 :(得分: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。如果您可以准确说明您正在使用的操作系统,我们可能会提供进一步的帮助。