0

私は非常に特殊なサーバー構成で Zend プロジェクトに取り組んでいます。本番環境は 2 つの専用サーバーで構成されています。1 つはポストフィックス サーバーをホストする会社の電子メール用で、もう 1 つは Apache2/ で実行される Web アプリケーション用のサーバーです。ゼンド。

これらのサーバーには 2 つの異なる IP がありますが、同じ Web サイト ドメインで動作します。

メール サーバーからのメールを送信者としてメールを送信しようとすると、Zend_Mail からエラー 500 が返され、email.err ログに次のように表示されます。

postfix/sendmail[15782]: 致命的: -n オプションはサポートされていません

しかし、ローカルアドレスまたは空のメールを送信者として配置すると機能するため、ローカルのメールを管理していないため、Webサーバーのポストフィックスによって追い出されると思います。

だから私の質問は: 2 つのサーバーをマージせずにドメイン電子メールを遠くのサーバーからの送信者として使用する方法はありますか?

編集: 追加するのを忘れました: リモート サーバー SMTP は使用できません。ローカルの sendmail しか使用できません。

4

1 に答える 1

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;
        }
    } 
}
于 2012-09-27T12:44:42.873 に答える