Witam

Zaraz po instalacji JobberBase (ten skrypt job boarda) korzysta ze standardowej funkcji mail() do rozsyłania emaili. Z klasy PHPmailer korzysta jedynie w przypadku wysyłania aplikacji (w sensie odpowiedzi na ogłoszenie), robiąc to takim kodem:

Kod
// Send email to company when applying online  
       public function MailApplyOnline($data)  
       {  
           $extra = '\n\n---\nThis e-mail is an application sent from ' . $_SERVER['HTTP_REFERER'];  
        
           $mail = new PHPMailer();  
    
           $mail->From     = stripslashes($data['apply_email']);  
           $mail->FromName = stripslashes($data['apply_name']);  
    
       $mail->Body    = str_replace(array('\r\n', '\r', '\n'), '
   ', stripslashes($data['apply_msg']) . $extra);  
       $mail->AltBody = $data['apply_msg'] . $extra;  
           $mail->Subject = "[" . SITE_NAME . "] I wish to apply for '" . $data['job_title'] . "'";  
       $mail->AddAddress($data['company_email'], $data['company_name']);  
           if ($data['attachment_path'])  
           {  
           $mail->AddAttachment($data['attachment_path'], $data['attachment_filename']);  
           }  
    
           if ($mail->Send())  
           {  
               return true;  
           }  
           else  
           {  
               return false;  
           }  
       }


Ponieważ mój serwer ma spore restrykcje dotyczące wysyłania maili za pomocą mail(), zmuszony jestem do przepisania funkcji w klasie. Funkcja powyżej znajduje się w klasie Postman, zaś klasa PHPmailer ładowana jest normalnie z pliku konfiguracyjnego. Póki co wszystko działa i maile pięknie dochodzą - znaczy to, że konfiguracja SMTP jest dobra winksmiley.jpg. Problem pojawia się jednak w momencie, gdy chcę przepisać pozostałe funkcje z mail() na obsługę SMTP z użyciem PHPmailer. Korzystając z powyższego (działającego) wzoru przepisuję więc funkcję:

Kod
// Send mail to admin when someone posts a new spam word  
     public function MailReportSpam($data)  
     {  
         $job_title = BASE_URL . 'job/' . $data['id'] . '/' . $data['url_title'] . '/';  
         $subject = '[SPAM on ' . SITE_NAME . '] ' . $job_title;  
         $msg .= "Following ad was reported as false/spam:\n--\n\n";  
         $msg .= $job_title;  
         $msg .= "\n\n" . $data['title'] . " at " . $data['company'];  
         $msg .= "\n\n" . $data['description'];  
         $msg .= "\n\n--- \n Published by: " . $data['poster_email'];  
         $msg .= "\n---\nEdit: " . BASE_URL . "post/" . $data['id'] . "/" . $data['auth'] . "/";  
         $msg .= "\nDeactivate: " . BASE_URL . "deactivate/" . $data['id'] . "/" . $data['auth'] . "/";  
         $msg .= "\n---\nIP: " . $_SERVER['REMOTE_ADDR'];  
         $msg .= "\nDate: " . $data['created_on'];  
          
         mail(NOTIFY_EMAIL, $subject, $msg, "From: " . SITE_NAME . " <" . NOTIFY_EMAIL . ">");  
     }


Na taką:

Kod
// Send mail to admin when someone posts a new spam word  
     public function MailReportSpam($data)  
     {
         $mail = new PHPMailer();
      
         $job_title = BASE_URL . 'job/' . $data['id'] . '/' . $data['url_title'] . '/';  
         $subject = '[SPAM on ' . SITE_NAME . '] ' . $job_title;  
         $msg .= "Following ad was reported as false/spam:\n--\n\n";  
         $msg .= $job_title;  
         $msg .= "\n\n" . $data['title'] . " at " . $data['company'];  
         $msg .= "\n\n" . $data['description'];  
         $msg .= "\n\n--- \n Published by: " . $data['poster_email'];  
         $msg .= "\n---\nEdit: " . BASE_URL . "post/" . $data['id'] . "/" . $data['auth'] . "/";  
         $msg .= "\nDeactivate: " . BASE_URL . "deactivate/" . $data['id'] . "/" . $data['auth'] . "/";  
         $msg .= "\n---\nIP: " . $_SERVER['REMOTE_ADDR'];  
         $msg .= "\nDate: " . $data['created_on'];  
        
         $mail->Body = str_replace(array('\r\n', '\r', '\n'), '
', stripslashes($msg));
         $mail->Subject = $subject;  
        $mail->AddAddress('moj@email.pl', 'Nazwa nadawcy');
          
         if ($mail->Send())  
         {
             return true;  
         }  
         else  
         {
             return false;  
         }    
     }


Oczywiście nie działa - za to pojawia się piękna informacja, że raport o spamie został wysłany - funkcje zwraca więc TRUE, choć żadne maile nie dochodzą. Skłaniam się więc do stwierdzenia, że gdzieś popełniam błąd choć nawet po przeczytaniu sporej garści informacji na temat PHPmailer błędów swych nie widzę. A że na oficjalne forum supportu tego JobberBase nie ma co liczyć, to może tutaj ktoś będzie wiedział, co robię źle.