Aar*_*ron 2 php email smtp sendmail
我正在使用 Redhat Linux 服务器。几个月前,我用 PHP5 编写了一个简单的用户注册系统,使用电子邮件作为验证。我记得当时它正在工作。然而,最近测试系统后,我发现电子邮件实际上并未发送(我尝试了来自不同域的几个电子邮件地址,并检查了垃圾邮件文件夹)。
作为测试用例,我尝试了下面的简单代码(使用我的实际电子邮件地址作为 $to):
<html>
<head>
<title>Sending email using PHP</title>
</head>
<body>
<?php
$to = "myemail@gmail.com";
$subject = "Subject";
$message = "Message";
$header = "From:webmaster@mydomain.com \r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html\r\n";
$ret = mail ($to,$subject,$message,$header);
if( $ret == true )
{
echo "Message sent successfully.";
}
else
{
echo "Message could not be sent.";
}
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
它回显“消息发送成功”。我还尝试使用PHPMailer,它给出了一条成功的消息(我相信他们的实现也使用了 mail() 函数)。
查看php.ini,有以下内容:
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_path = /usr/sbin/sendmail -t -i
Run Code Online (Sandbox Code Playgroud)
我不太熟悉 SMTP 服务器的工作原理。我可以采取哪些步骤来解决此问题?这只是联系服务器管理员的问题还是我可以自己更改一些内容(我有 root 访问权限)?
编辑:
根据 Andrzej 的建议,我检查了邮件日志文件,并在最近的尝试中找到了这两行(我替换了我的服务器名和电子邮件):
3 月 11 日 17:11:30 myservername sendmail[23240]:s2BLBU2x023240:from=apache,size=149,class=0,nrcpts=1,msgid=<201403112111.s2BLBU2x023240@myservername.com>,relay=apache@localhost
3 月 11 日 17:11:30 myservername sendmail[23240]:s2BLBU2x023240:to=myemail,ctladdr=apache (48/48),delay=00:00:00,xdelay=00:00:00,mailer=relay,pri= 30149,中继=[127.0.0.1] [127.0.0.1],dsn=4.0.0,stat=延迟:连接被[127.0.0.1]拒绝
现代 sendmail 使用 SMTP 连接到 127.0.0.1:25 将消息中继到以 root 身份运行的本地 sendmail 守护进程。这样做是为了避免安装 sendmail 作为设置 root uid 程序的安全风险。
您的计算机上似乎尚未(成功)启动 sendmail 守护程序/服务。Sendmail 应向日志文件报告启动失败及其原因。
看来该service sendmail restart命令在 redhat 上启动了 sendmail。
| 归档时间: |
|
| 查看次数: |
6106 次 |
| 最近记录: |