Zend_Mail错误500> postfix / sendmail致命:不支持-n选项

时间:2012-07-02 13:28:13

标签: zend-framework webserver sendmail postfix-mta zend-mail

我正在一个非常特定的服务器配置中的Zend项目,我们的生产环境由两个专用服务器组成,一个用于公司的电子邮件,它托管一个后缀服务器,另一个服务器用于我们正在运行的web应用程序在Apache2 / Zend上。

这些服务器有两个不同的IP,但在同一个网站域上工作。

现在,当我尝试使用来自邮件服务器的电子邮件作为发件人发送电子邮件时,我从Zend_Mail收到错误500,并且email.err日志告诉我:

  

postfix / sendmail [15782]:致命:不支持-n选项

但是,当我将本地地址或空白电子邮件作为发件人时,它可以正常工作,所以我想我会被网络服务器的后缀踢掉,因为它不会管理这些电子邮件。

所以我的问题是:在没有合并这两台服务器的情况下,有没有办法在远程服务器上使用域名电子邮件作为发件人?

编辑:我忘了添加:我不能使用远程服务器SMTP,我只能使用本地sendmail。

1 个答案:

答案 0 :(得分:0)

我找不到任何解决方案或解释,所以我最后通过编写基于PHP邮件命令的自定义操作帮助程序。

我希望它可以帮助某人:

class Zend_Controller_Action_SentEmail extends Zend_Controller_Action_Helper_Abstract{

    public function sendEmail($from, array $to, $subject, $message){

        //Header set
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
        $headers .= "From: ".$from."<email@domain.com>\r\n";
        $headers .= "X-Mailer: PHP/".phpversion();


        //To
        $stringTo = "";

        foreach($to as $k => $v) {
                $stringTo .= $k." <".$v.">, ";
        }

        $stringTo = trim($stringTo, ", ");


        //Send the email
        if(mail($stringTo, $subject, $message, $headers, "-f bounce@domain.com")){
            return true;
        }
        else{
            //Oh! Noes!
            return false;
        }
    } 
}