SMTP 服务器问题,PHP 邮件

Posted

技术标签:

【中文标题】SMTP 服务器问题,PHP 邮件【英文标题】:SMTP server problems, PHP mail 【发布时间】:2014-03-08 03:59:00 【问题描述】:

我在 Windows 8.1 上安装了 Apache 和 php5,但无法从我的 localhost 网站发送邮件,出现消息“警告:mail() [function.mail]:无法在“localhost”端口连接到邮件服务器25,验证您在 php.ini 中的“SMTP”和“smtp_port”设置,或者在第 22 行的 C:\WebServer\Apache2.2\htdocs\WebContent\mailForm.php 中使用 ini_set()。 php代码在下面,我想没关系,因为它正确地执行了“回声”。有人可以就正在发生的事情提供任何提示吗?谢谢。

    <?php
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$message = $_POST['message'];

$to = "myemail@example.com";
$subject = "New_message";


if (($first_name == "") || ($last_name == "") || ($email == "") || ($message == ""))

echo '<script type="text/javascript">alert("Fill in all fields")</script>';

else

    mail($to, $subject, $message, "From:" . $first_name . $last_name);
echo "Sucess;

?>

【问题讨论】:

【参考方案1】:

您确定在运行 PHP 的主机上运行着邮件服务器吗?你提到你安装了 apache 和 PHP,但你没有提到你安装了一个邮件服务器。如果没有安装邮件服务器,那是你的问题。

如果主机上实际上运行着邮件服务器,那么这意味着 PHP 没有正确配置来找到它。创建一个像下面这样的小脚本,它使用phpinfo() 打印出你所有的 PHP 环境变量:

<? phpinfo(); ?>

检查sendmail_path 的值。这是主机上邮件服务器的正确位置吗?如果没有,请将您的 php.ini 更改为指向正确的位置。

如果实际上主机上没有运行邮件服务器,那么您可以安装一个,或者您可以通过托管在其他地方的邮件服务器(例如 smtp.gmail.com,如果您有一个gmail帐户)。这可以使用 phpmailer 来完成。以send email using Gmail SMTP server through PHP Mailer 为例。

【讨论】:

以上是关于SMTP 服务器问题,PHP 邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用cloudflare时的php邮件和SMTP

php电子邮件和smtp [重复]

在 Linux 上使用带有 SMTP 服务器的默认 PHP 邮件功能

无法使用 PHP 代码和 SMTP 服务器向 yahoo(任何地址)发送邮件

使用 PHP Mailer 从本地服务器外部的电子邮件地址发送 smtp 电子邮件

php smtp 无法在 ubuntu 服务器中发送电子邮件