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