如何通过PHP脚本从Apache服务器发送电子邮件

5

我已在我的Windows 7电脑上安装了Apache和PHP。现在我正在学习PHP。以下是我的PHP脚本,用于发送电子邮件。

<?php
    if(isset($_REQUEST['email']))
    {
        $email = $_REQUEST['email'];
        $subject = $_REQUEST['subject'];
        $message = $_REQUEST['message'];
        mail("padhy.surya@gmail.com","$subject","$message","From:","$email");
        echo "Thank you for using the email !!!";
    }
    else
    {
        echo "Mail is not set properly. Please fill the form properly";
    }
?>

我正在使用HTML表单来获取发送电子邮件所需的参数。以下是我在发送电子邮件时收到的错误信息。
警告:mail() [function.mail]:无法连接到邮件服务器“localhost”端口25,请验证php.ini中的“SMTP”和“smtp_port”设置,或使用ini_set()在C:\ WebLearn \ Apache-2.2 \ htdocs \ SimpleWebsite \ contact.php 的第7行。
我需要在php.ini文件或httpd.conf中设置任何内容吗?如果需要,如何配置?我需要在我的PC上安装额外的SMTP服务器才能发送电子邮件吗?请建议从本地PC发送电子邮件所需的必要步骤。
1个回答

6
该消息表示它试图将邮件传递到本地主机的25端口,但没有监听该端口。
PHP无法直接向"互联网"发送电子邮件。该消息必须先经过邮件服务器程序(如Postfix、Sendmail或SSMTP),然后再转发到相应的目标地址。
您需要安装和配置一个邮件服务器程序,并通过php.ini设置PHP来使用它。我认为您也可以选择配置PHP使用Sendmail二进制文件而不是SMTP传输。

我能否为Apache服务器配置SMTP服务?还是说我需要安装其他SMTP服务器?是否有免费的SMTP服务器可用? - Surjya Narayana Padhi
1
@Surjya Narayana Padhi:不,Apache是一个HTTP服务器,而不是SMTP服务器。我在我的回复中已经提到了三个免费的SMTP服务器。 - Borealid
非常感谢。我打算使用SendMail。您能告诉我如何设置PHP以使用我的 SendMail 程序吗? - Surjya Narayana Padhi
我下载了Windows的免费SMTP服务器。现在它正在25端口上运行。但是当我运行我的PHP脚本时,它显示以下消息:警告:mail() [function.mail]:SMTP服务器响应:550无效收件人:padhy.surya@gmail.com - Surjya Narayana Padhi
2
@SurjyaNarayanaPadhi:你需要配置邮件服务器以允许发送给非本地收件人的邮件。默认情况下,邮件服务器不会将消息“中继”到任意域(如gmail.com)。您还应确保邮件服务器仅侦听来自本地主机的邮件-否则,您将运行所谓的“开放式中继”,这将是不好的(其他人可以使用您的计算机发送垃圾邮件)。 - Borealid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接