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;
}
}
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

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 . ">");
}
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;
}
}
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.