PHP 邮件功能在 Centos 服务器上不起作用

2022-08-31 00:09:19

我正在使用centos服务器,并且必须将邮件发送给用户,所以我从一台服务器复制了我的运行代码并在此处使用它,但它没有发送邮件。

代码是 :

                $to = $email; //writing mail to the user
                $subject = "Hii";
                $message = "<table>
                <tr><td> Hello ".$email.",</td></tr>
                <tr><td> Some Text </td></tr>
                <tr><td> Some Text </td></tr>
                <tr><td> Some Text </td></tr>
                <tr><td> Some Text </td></tr>
                </table>" ;
                $from = "example@domain.com";
                // To send HTML mail, the Content-type header must be set
                    $headers  = 'MIME-Version: 1.0' . "\r\n";
                    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
                // Additional headers
                $headers .= 'From: Team <example@domain.com>' . "\r\n";

                if(mail($to,$subject,$message,$headers))
                {
                    echo "0";// mail sent Successfully.
                }
                else
                {
                    echo "1";
                }

它始终打印 1。相同的代码在其他项目上运行良好。请指导我,我能做些什么来启用它在这里?任何帮助将不胜感激!


答案 1

安装 sendmail* 并运行以下命令后:

[root@sendmail ~]# yum install sendmail*
[root@sendmail mail]# yum install dovecot
[root@sendmail mail]# cd /etc/mail/
[root@sendmail mail]# vi local-host-names
# local-host-names - include all aliases for your machine here.
example.com
[root@sendmail mail]# vi /etc/dovecot.conf
protocols = imap pop3 //uncomment
[root@sendmail mail]# m4 sendmail.mc > sendmail.cf
[root@sendmail mail]# make
[root@sendmail mail]# /etc/init.d/sendmail start
[root@sendmail mail]# /etc/init.d/saslauthd start
[root@sendmail mail]# /etc/init.d/dovecot start
[root@sendmail mail]# chkconfig sendmail on
[root@sendmail mail]# chkconfig dovecot on
[root@sendmail mail]# chkconfig saslauthd on

我仍然有同样的问题。我检查了我的,看到一个错误:/var/log/maillog

My unqualified host name (domain) unknown; sleeping for retry

经过更多的搜索,我改变了:/etc/hosts

127.0.0.1     localhost localhost.localdomain domain
ip.ip.ip.ip  domain localhost 

自:

 127.0.0.1   localhost.localdomain localhost domain
 ip.ip.ip.ip  localhost domain  

现在邮件功能现在工作正常。


答案 2

我知道这个问题已经得到了回答,但我也有类似的问题。万一其他人....

/var/log/maillog 向我展示了一个 Postfix 权限问题。

sendmail: fatal: chdir /var/spool/postfix: Permission denied

跟踪错误,我发现解决方案是CentOS上的SELinux策略(我使用的是版本6)。

快速回答:setsebool httpd_can_sendmail 1

您可以使用 -P 使更改永久生效;我只需要密码重置电子邮件,所以我的情况不需要。

信用:http://www.spidersoft.com.au/2011/posftix-permission-denied-problem/?ModPagespeed=noscript

编辑:我会评论,但我还没有足够的声誉。


推荐