wysyłanie e-mail na serwerach active24.pl, paczka PEAR MAIL

sprintserwis

Avatar: sprintserwis

2012-12-17 18:24

Witam,
Chciałem się podzielić z innymi rozwiązaniem problemu wysyłania e-mail na serwerach active24.pl.
W poradniku na stronie:
http://opensolution.org/Quick.Cart/docs_v4.x/?id=pl-tips#zastapienie_wysylania_e-maila_przez_funkcje_mail_na_inna
jest co prawda przykład wykorzystania paczek PEAR MAIL, gdy nie działa funkcja php mail(), ale w wersji Quick.Cart v5.x także nie działała, gdyż wymagała drobnej modyfikacji.
Inną sprawą jest to, że na serwerach active24 (i być może także innych) nie trzeba już doinstalowywać ww paczek. Wystarczy podmienić funkcję sendEmail() w pliku core/common.php na następującą:


function sendEmail$aForm$sFile 'messages.tpl'$sTargetEmail null ){
  
extract$aForm );
  
$oTpl TplParser::getInstance( );
  if( !empty( 
$sTopic ) && !empty( $sMailContent ) && checkEmail$sSender ) === ){
    if( !empty( 
$sPhone ) )
      
$sMailContent $GLOBALS['lang']['Telephone'].': '.$sPhone."\n".$sMailContent;
    if( !empty( 
$sName ) )
      
$sMailContent $GLOBALS['lang']['Name_and_surname'].': '.$sName."\n".$sMailContent;
    if( !isset( 
$sTargetEmail ) )
      
$sTargetEmail $GLOBALS['config']['email'];
    if( !isset( 
$GLOBALS['config']['mail_encoding_utf8'] ) || ( isset( $GLOBALS['config']['mail_encoding_utf8'] ) && $GLOBALS['config']['mail_encoding_utf8'] === true ) ){
      
$aHead['Content-Type'] = "text/plain; charset=utf-8";     // kodowanie znaków, powinno być takie samo jak na stronie
      
$aHead['MIME-Version'] = "1.0";
      
$sTopic '=?UTF-8?B?'.base64_encode$sTopic ).'?=';
    }
    else{
      
$sMailContent change2Latin$sMailContent );
      
$sTopic change2Latin$sTopic );
    }
    require_once 
'Mail.php';
  
$aData['host'] = $GLOBALS['config']['mhost'];
  
$aData['port'] = $GLOBALS['config']['mport'];
  
$aData['auth'] = $GLOBALS['config']['mauth'];
  
$aData['username'] = $GLOBALS['config']['muser'];
  
$aData['password'] = $GLOBALS['config']['mpass'];

  
$aHead['Subject'] = $sTopic;        // temat wiadomości
  
$aHead['From'] = $sSender;        // adres nadawcy tj, adres skrzynki z której wiadomość jest wysyłana 
  
$aHead['To'] = $sTargetEmail;        // adres odbiorcy tj. adres na który ma być wysłana wiadomość

  
$oMail Mail::factory('smtp'$aData);
    if (
PEAR::isError($oMail)) {
       if( isset( 
$sFile ) )
        return 
$oTpl->tBlock$sFile'MAIL_SEND_ERROR' );
      else
        return 
false;
    } else {
      
$mError $oMail->send($sTargetEmail$aHead$sMailContent);
      if (
PEAR::isError($mError)) {
        if( isset( 
$sFile ) )
          return 
$oTpl->tBlock$sFile'MAIL_SEND_ERROR' );
        else
          return 
false;
      } else {
        if( isset( 
$sFile ) )
          return 
$oTpl->tBlock$sFile'MAIL_SEND_CORRECT' );
        else
          return 
true;
      }
    }
  } else {
    if( isset( 
$sFile ) )
      return 
$oTpl->tBlock$sFile'REQUIRED_FIELDS' );
    else
      return -
1;
  }
// end function sendEmail


Dodatkowo w pliku database/general.php umieszczamy konfigurację wysyłkowego konta pocztowego:


/*
* e-mail wysyłkowy
*/
$config['mhost'] = 'mail.active24.pl';    // nazwa serwera pocztowego, z którego będzie wysyłana wiadomość
$config['mport'] = 587;            // port serwera  pocztowego, z którego będzie wysyłana wiadomość
$config['mauth'] = true;        // czy wysyłając wiadomość biblioteka ma się autoryzować na serwerze?
$config['muser'] = 'adres@e-mail';    // nazwa użytkownika serwera tj, adres skrzynki z której będzie wysłana wiadomość
$config['mpass'] = '*********';    // hasło do skrzynki


Oczywiście wymagane parametry można wpisać wprost w funkcję sendEmail, ale mnie wygodniej było wpisać je do pliku general.php abym nie musiał ich szukać gdyby trzeba było je zmienić.

mam nadzieję, że komuś się ten gotowiec przyda.
Pozdrawiam,
Sławek

PS testowałem dokładnie pod wersją freeware Quick.Cart v5.2

» Quick.Cart v5.x

Do góry
o nas | kontakt