【问题标题】:mail() not returning any value PHPmail() 不返回任何值 PHP
【发布时间】:2016-09-13 20:35:31
【问题描述】:

我是php 的初学者,发现了一个简单的邮件功能。以下是代码:

private function sendEmail() {

  $to = $this - > email;
  $subject = $this - > subject;
  $message = $this - > name. " : ". $this - > message;
  $header = "From: ".$this - > email;

  $mail = mail($to, $subject, $message, $header);

  echo $to, $subject, $message, $header, $mail, "End";

  if ($mail) {
    $this - > response_status = 1;
    $this - > response_html = 'Thank You!';
  } else {
    echo "Mail not found";
  }
}

当我从 Javascript 调用它时,它总是落在 $.ajax 的错误块中,但没有抛出错误消息。当我在网络选项卡中检查 ajax 调用的响应时,我得到了所有变量($to、$subject、$name、$message、$header)的正确值,但 $mail 始终为空白。

我也从 else 块中得到 Mail not found

谁能指出我正确的方向?

我在 XAMPP 的 localhost 上运行它(在 Ubuntu 15.10 上)。

以下是响应的快照:

【问题讨论】:

  • 可能是false instead of blank。使用var_dump() 对其进行调试以查看其中包含的内容。
  • 您还没有向我们展示您是如何从 Ajax 调用它的。那是一个单独的问题。在 PHP 中,$mail 的值将是 true 或 false。您进入函数中返回“找不到邮件”的块的事实表明它返回错误。
  • 那么这里的实际问题是您的javascript中的错误块正在处理此代码吗?显示你的 Javascript,然后......另外,这个函数没有 return 任何东西。也许这是你的错误,但我们无法判断,因为我们没有足够的代码
  • @PeeHaa,你是对的。它返回错误。我需要一个 smtp 服务器吗?我在 w3schools 上读到,mail 不需要任何安装。
  • 您至少需要一些能够在您的机器上发送邮件的代理/传输。 mail 只是将邮件传递给实际发送它的任何人。或者使用外部 smtp 服务器。

标签: javascript php ajax email


【解决方案1】:

How to configure XAMPP to send mail from localhost?

检查一下。应该为你工作,你很可能没有任何应用程序来实际发送邮件 - 例如。为 *nix 发送邮件。

【讨论】:

  • 我确实尝试按照这些步骤操作,但现在又得到了另一个。我已安装 ssmtp,现在出现此错误:ssmtp: Cannot open smtp.gmail.com:587。但仍然感谢您的帮助。
猜你喜欢
  • 2016-09-16
  • 2013-04-30
  • 1970-01-01
  • 2012-11-27
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 2016-04-18
相关资源
最近更新 更多