有人可以帮我弄清楚为什么不发送吗?我是PHP的新手。
这是在我的网站上填写的联系表格。我从我的服务器(不是本地主机)发送并收到控制台消息"邮件未发送"
<?php
include 'ChromePhp.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$to = 'me@myemail.com';
$subject = 'Email from Me';
$message = $_POST['email'];
if(mail($to, $subject, $message)){
ChromePHP::log( 'Mail Sent');
}else{
ChromePHP::log( 'Mail Not Sent');
}
}
?>
我知道这个问题以前有人问过,但我找不到有效的答案。提前感谢!
你应该包括 mail() 函数的标头,示例
$headers = 'From: webmaster@example.com' . "'r'n" .
'Reply-To: webmaster@example.com' . "'r'n" .
'X-Mailer: PHP/' . phpversion();
然后将$headers参数插入 mail() 函数:
mail($to, $subject, $message, $headers);
没有错误消息,我只能猜测。您可能需要在 php.ini 中设置 SMPT 服务器。您可以在运行时使用 ini_set('SMTP', 'your_server_here') 执行此操作。
有关邮件配置的更多信息,请访问:http://php.net/manual/en/mail.configuration.php
如果您没有,可以检查您的 ISP 是否有开放的服务器。ISP 有时具有打开的 SMTP 服务器(发送服务器),您可以通过查找有关如何设置邮件程序 (Outlook) 的说明来找到它们。
不过要小心,除了轻度测试之外,不要将其用于任何事情。我可以想象他们不会喜欢很多垃圾邮件通过他们的服务器。
编辑:另外,请阅读所需的标题。我看到您缺少发件人标头,这应该会导致警告。看这里: http://php.net/manual/en/function.mail.php
When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini.
Failing to do this will result in an error message similar to Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. The From header sets also Return-Path under Windows.
你应该检查你的邮件服务,因为上面的PHP代码非常正确。
您可以要求托管服务提供商激活邮件服务,因为某些托管服务提供商默认不允许使用邮件。