有人可以帮我弄清楚为什么这不发送?我是PHP的新手。
这是我网站上的联系表格。我从我的服务器(不是localhost)发送并收到控制台消息“Mail not sent”
<?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');
}
}
?>
我之前已经意识到这个问题,但我找不到有效的答案。提前谢谢!
答案 0 :(得分:2)
您应该在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);
答案 1 :(得分:1)
没有错误信息,我只能猜测。您可能需要在php.ini中设置SMPT服务器。您可以使用ini_set('SMTP','your_server_here')在运行时执行此操作。
有关此处邮件配置的详情:http://php.net/manual/en/mail.configuration.php
如果您没有,可以检查您的ISP是否有开放服务器。 ISP有时会打开SMTP服务器(外发服务器),您可以通过查找有关如何设置邮件程序(Outlook)的说明来查找它们。
但要小心,除了光线测试外,不要使用它。我可以想象他们不会喜欢很多垃圾邮件通过他们的服务器。
编辑:另外,请阅读所需的标题。我看到你错过了一个From标题,这会导致警告。见这里: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.
答案 2 :(得分:0)
您应该检查您的邮件服务,因为上面的PHP代码非常正确。
答案 3 :(得分:0)
您可以要求您的托管服务提供商激活邮件服务,因为某些托管服务提供商不允许默认使用邮件。