2010年10月19日 星期二

joomla1.5 寄信發出PHPMAILER_RECIPIENTS_FAILED訊息!

當遇到這個訊息,做了如下兩個動作,應可解決你的問題,至少目前我是如此解決的:

編輯components/com_contact/controller.php檔

找到這一行

$mail->setSender( array( $email, $name ) );

改並增加為:

$mail->setSender( array( $MailFrom, $name ) );
$mail->addReplyTo( array( $email, $name ) );

 

再編輯components/com_mailto/controller.php檔

找到這幾行

  $email             = JRequest::getString('mailto', '', 'post');
  $sender          = JRequest::getString('sender', '', 'post');
  $from             = JRequest::getString('from', '', 'post');
  $subject_default    = JText::sprintf('Item sent by', $sender);
  $subject          = JRequest::getString('subject', $subject_default, 'post');

在其下增加兩行:

      $email             = JRequest::getString('mailto', '', 'post');
      $sender          = JRequest::getString('sender', '', 'post');
      $from             = JRequest::getString('from', '', 'post');
      $subject_default    = JText::sprintf('Item sent by', $sender);
      $subject          = JRequest::getString('subject', $subject_default, 'post');
      $from_name    = JApplication::getCfg('fromname');
      $mail_from   = JApplication::getCfg('mailfrom');

並在大約148 到152行找到:

      if ( JUtility::sendMail($from, $sender, $email, $subject, $body) !== true )
      {
         JError::raiseNotice( 500, JText:: _ ('EMAIL_NOT_SENT' ));
         return $this->mailto();
      }

改為:

      if ( JUtility::sendMail($from_name, $mail_from, $email, $subject, $body) !== true )
      {
         JError::raiseNotice( 500, JText:: _ ('EMAIL_NOT_SENT' ));
         return $this->mailto();
      }

這樣應該可以解決。而這個調整,若遇到系統更新升級,可能還要再設定一次!

資料整理自:http://forum.joomla.org/viewtopic.php?p=1598076

2 則留言:

cableskyliu 提到...

發哥你好,
我也是此問題
但依你的作法修正後還是一樣
不知你有無其他見意提供
我的主機原本是正常的
以smtp設定發信
後來改了主機的ip後就出現錯誤了
找了很多方法
修正不過來
給點意見或許有幫助
先謝過嘞

cableskyliu@gmail.com

發哥 提到...

對於設定的改寫,我也不懂,我只是依照外國的網站操作,然而就我粗淺的就程式碼的表面意思來看,更改這段程式碼的方向基本上是用以將joomla的一般用戶在網站中以其電子郵件地址為寄件者的信轉成以網站管理者的電子郵件地址為寄件者,因為有些收信的系統會將寄件者的電子郵件與其smtp比對,凡寄件者的郵件地址不是該smtp伺服器所提供服務的對像,就會將其擋掉,而這也是改這段程式碼的目的,然而會發生PHPMAILER_RECIPIENTS_FAILED訊息,恐怕不是只有這種現象,所以雖然你的網站出現同樣的訊息,但原因可能並非這個現象,所以你的問題才會沒解決。
我能問以下,你的主機的ip改完後還可以寄信嗎?雖然有此一訊息!
你有試著改以phpmail寄看看嗎?若phpmail可以寄,那我覺得問題還是應該出在於smtp的設定問題,是不是你用的smtp有寄件上限的問題所致?
我之前也遇到gmail的smtp問題,gmail的smtp有每天的寄件上限。超過了,他就不讓你寄了。並且也會出現訊息,至於訊息內容,我忘了!
不好意思,幫不上忙!