【发布时间】:2013-10-04 22:30:55
【问题描述】:
我尝试设置一个 email.html 和一个 action.php,以便有人可以从网站发送电子邮件。这是 email.html 中的代码
<form action="./action.php" method="post">
<p>Your Name</p>
<p><input type="text" name="name" /></p>
<p>Email</p>
<p><input type="text" name="email" /></p>
<p>Services</p>
<p><input type="text" name="service" /></p>
<p>Requests</p>
<p><textarea rows="8" cols="32" name="comment"></textarea></p>
<p><input type="submit" value="Send" /></p>
</form>
在 action.php 我有
<?php
$to = "foo@outlook.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "foo2@gmail.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
在 email.html 中输入的信息成功加载到 action.php,但我的 Outlook 收件箱中没有通过电子邮件方法收到任何内容。我错过了什么吗?
【问题讨论】:
-
您盲目地假设电子邮件已发送。您需要检查
mail的返回值以检查它是否实际发送:if( mail(...) ) { // mail sent }。 -
您的主机上是否有活动的电子邮件发件人,例如 sendmail 或 PHPMailer?
-
您的系统上是否安装了 SMTP 服务器?
-
@AmalMurali 明确地说,返回值 true 表示本地 SMTP 接受。 它没有说明交付。
-
谢谢,这应该是我的下一步行动。我只是加入了 if/else 逻辑,else 正在运行,所以它没有发送。我在 namecheap 托管网站,肯定有 PHP 支持,我可能需要查看设置。