0

有人可以帮我弄清楚为什么这没有发送吗?我是 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');
     }
}

?>

我意识到以前有人问过这个问题,但我找不到有效的答案。提前致谢!

4

4 回答 4

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);
于 2013-01-26T07:44:22.720 回答
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.
于 2013-01-26T07:39:59.777 回答
0

你应该检查你的邮件服务,因为上面的 PHP 代码很真实。

于 2013-01-26T07:36:44.640 回答
0

您可以要求您的托管服务提供商激活邮件服务,因为某些托管服务提供商默认不允许使用邮件。

于 2013-01-26T08:33:18.947 回答