2012-07-02 7 views
0

Я работаю над проектом Zend в очень специфической конфигурации сервера, наша производственная среда состоит из двух выделенных серверов, один для электронной почты компании, постфикс-сервер и другой сервер для нашего веб-приложения, которое работает на Apache2/Zend.Ошибка Zend_Mail 500> postfix/sendmail fatal: -n не поддерживается

Эти серверы имеют два разных IP-адреса, но работают в одном домене.

Теперь, когда я пытаюсь отправить по электронной почте с электронной почтой с почтового сервера в качестве отправителя, я получаю сообщение об ошибке 500 из Zend_Mail и журнал email.err говорит мне:

постфикса/Sendmail [15782 ]: со смертельным исходом: опция -n не поддерживается

Но когда я поставил местный адресуют или пустое сообщение в качестве отправителя она работает, так что я предполагаю, что я вышибить по постфикса на веб-сервере, так как он не управлять локально этими электронными письмами.

Итак, мой вопрос: есть ли способ использовать электронную почту домена в качестве отправителя с удаленного сервера без слияния двух серверов?

Редактировать: я забыл добавить: я не могу использовать SMTP удаленного сервера, я могу использовать только локальный sendmail.

ответ

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 protected]>\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 [email protected]")){ 
      return true; 
     } 
     else{ 
      //Oh! Noes! 
      return false; 
     } 
    } 
}