Проблемы с отправкой электронных писем (E-Mail) через sendmail или SMTP в Joomla 1.5

archive view archive save

Проблемы с отправкой электронных писем (E-Mail) через sendmail или SMTP в Joomla 1.5 PHPMAILER_EXECUTE/usr/sbin/sendmail, Mailer Error: Could not execute: /usr/sbin/sendmail, notice Письмо не может быть отправлено - именно так могут заканчиваться попытки отправки E-Mail в Joomla 1.5 когда дядя хостер неправильно настроил sendmail, чмоды на доступ к нему или запретил его экзекуцию.

Если те же проблемы с отправкой электронных писем (E-Mail) через sendmail или SMTP в Joomla 1.5, то первым делом посмотрите в информации про PHP полный путь к sendmail и если в общей конфигурации он прописан верно, то в той же информации про PHP смотрите значения директивы с именем disable_functions и если оно равно = exec, system, shell_exec, passthru, popen, dl, set_time_limit, max_execution_time, ini_restore, mail, то попытки отправки электронных писем (E-Mail) именно через sendmail будут накрываться медным тазом ибо экзекуция (выполнение) sendmail происходит посредством функции popen!

Единственный выход - это пробовать отправлять почту через SMTP сервер и с общими настройками Joomla для отправки электронных писем (E-Mail) через SMTPя думаю проблем не должно возникнуть, одно единственное, что следует упомянуть, так это то, что при использовании "Отправить эту ссылку по почте" в поле Ваш E-Mail: пользователь должен указать как раз не свой, а наш E-Mail под учётной записью которого отправляется электронная почта (E-Mail) через SMTP потому, что SMTP сервер требует совпадения имени отправителя (Ваш E-Mail, From) с именем учетной записи под которой идёт подключение к SMTPсерверу: sender address must match authenticated user SMTP.

SMTP -> FROM SERVER: 220 smtp21.mail.ru ESMTP ready SMTP -> FROM SERVER: 250-smtp21.mail.ru 250-SIZE 73400320 250-8BITMIME 250-AUTH PLAIN LOGIN 250 STARTTLS SMTP -> FROM SERVER: 250 OK SMTP -> FROM SERVER: 501 sender address must match authenticated user SMTP -> ERROR: RCPT not accepted from server: 501 sender address must match authenticated user SMTP -> FROM SERVER: 503 sender not yet given SMTP -> ERROR: RSET failed: 503 sender not yet given Mailer Error: SMTP Error: The following SMTP Error: Data not [email protected]

Для того чтобы посетители сайта могли использовать возможность "Отправить эту ссылку по почте" в условиях настройки Joomla для отправки электронной почты (E-Mail) через SMTP, то мы должны сделать соответствующее объявление на своём сайте, в котором опубликовать наш E-Mail от имени которого происходит подключение к SMTP серверуи тогда функция "Отправить эту ссылку по почте" должна будет заработать!

Отправить эту ссылку по почте
E-mail адресата: [email protected]
Ваше имя: Vasya
Ваш E-Mail: [email protected]
Тема: Ku-Ku!

SMTP -> FROM SERVER: 220 smtp9.mail.ru ESMTP ready SMTP -> FROM SERVER: 250-smtp9.mail.ru 250-SIZE 73400320 250-8BITMIME 250-AUTH PLAIN LOGIN 250 STARTTLS SMTP -> FROM SERVER: 250 OK SMTP -> FROM SERVER: 250 Accepted SMTP -> FROM SERVER: 354 Enter message, ending with "." on a line by itself SMTP -> FROM SERVER: 250 OK id=1Sz8ZZ-0002IH-Jq SMTP -> FROM SERVER: 221 smtp9.mail.ru closing connection Message sent!

В Joomla 1.5 для отправки писем используется библиотека PHPMailer v2.0.4 for PHP4, расположенная по адресу /libraries/phpmailer/phpmailer.php и если общие настройки в Joomla сделаны верно, а почта не уходит и нельза определить ошибку, то используйте приведённые ниже куски кода для тестирования PHPMailer.

Пример использования PHPMailer для отправки через sendmail:

<?php 
 
require_once('./libraries/phpmailer/phpmailer.php');
 
$mail = new PHPMailer(); // defaults to using php "mail()"
$mail->IsSendmail(); // telling the class to use SendMail transport
$mail->Sendmail = '/usr/sbin/sendmail'; // Set full path to sendmail
//$body = file_get_contents('contents.html');
$body = 'body';
//$body = eregi_replace("[\]",'',$body);
 
$mail->AddReplyTo("[email protected]","First Last");
//$mail->SetFrom('[email protected]', 'First Last');
$mail->From = '[email protected]';
$mail->AddReplyTo("[email protected]","First Last");
 
$address = "[email protected]";
 
$mail->AddAddress($address, "John Doe");
$mail->Subject = "PHPMailer Test Subject via Sendmail, basic";
// optional, comment out and test
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->MsgHTML($body);
//$mail->AddAttachment("images/phpmailer.gif"); // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
 
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}

Пример использования PHPMailer для отправки через SMTP сервер:

<?php 
 
# http://phpmailer.worxware.com/index.php?pg=examples

require_once('./libraries/phpmailer/phpmailer.php');
 
$mail = new PHPMailer(); // defaults to using php "mail()"
$mail->IsSMTP(); // telling the class to use SMTP
//$body = file_get_contents('contents.html');
$body = 'body';
//$body = eregi_replace("[\]",'',$body);
 
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
 
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "smtp.mail.ru"; // SMTP server
$mail->Port = 25; // set the SMTP port for the GMAIL
$mail->Username = "[email protected]"; // SMTP account username
$mail->Password = "mainpass"; // SMTP account password
 
$mail->AddReplyTo("[email protected]","First Last");
//$mail->SetFrom('[email protected]', 'First Last');
$mail->From = '[email protected]';
$mail->AddReplyTo("[email protected]","First Last");
 
$address = "[email protected]";
 
$mail->AddAddress($address, "John Doe");
$mail->Subject = "PHPMailer Test Subject via Sendmail, basic";
// optional, comment out and test
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->MsgHTML($body);
//$mail->AddAttachment("images/phpmailer.gif"); // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
 
if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

В некоторых случаях, настройки некоторых модулей могут некорректно работать с SMTP настройками и выдавать PHPMAILER_RECIPIENTS_FAILED, это происходит из-за несоответствия SMTP логина с именем отправителя, по идее должен помочь следующий рецепт: открываем components/com_contact/controller.php, находим строку 194 и меняем:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Письмо не может быть отправлено из-за кривого com_mailto

Кнопка E-mail (отправить ссылку другу) служит для отправки другу или недругу ссылки на какой-то материал. Письмо не может быть отправлено через эту кнопку из-за кривого /components/com_mailto/controller.php, в котором не верно рассчитывается таймаут и проверка "Verify that this is a local link". Открываем /components/com_mailto/controller.php, находим строки:

// we return time() instead of 0 (as it previously was), ...
if($timeout == 0 || time() - $timeout < MAILTO_TIMEOUT) {
    JError::raiseNotice( 500, JText:: _ ('EMAIL_NOT_SENT'));
    return $this->mailto();
}
 
//......
 
// Verify that this is a local link
if((!$link) || (!JURI::isInternal($link))) {
    //Non-local url... 
    JError::raiseNotice( 500, JText:: _ ('EMAIL_NOT_SENT' ));
    return $this->mailto();
}

И меняем их до такой кондиции:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Также будет полезно увеличить значение константы MAILTO_TIMEOUT с 20 до 50! Эта бага упоминалась на:

Автор: Олег Головский


Об авторе
АдМинь БагоИскатель
АдМинь БагоИскатель ярый борец за безглючную работу любых механизмов и организмов во всей вселенной и потому пребывает в вечном поиске всяческих багов, а тот кто ищет как известно всегда находит. Когда что-то или кого-то вылечить не в состоянии, то со словами "Я в аду, а вы все черти" уходит в запой выйдя из которого снова берётся лечить неизлечимое.
Ещё статьи автора

Комментарии   

АдМинь БагоИскатель
0 #6 АдМинь БагоИскатель 20.03.2020 06:35
Цитирую Анатолий Николаевич:
смтп ошибка , другие тоже не работают, вычистил все лишнии мейл адреса, и в компонентах и настройках, порты и способы шифрования менял, менял смтп сервера, заводил новые ящики, нифига не получилось

Выше в тексте есть код "Пример использования PHPMailer для отправки через SMTP сервер:" тестового скрипта, по результатам работы которого нужно смотреть полный текст выдаваемой ошибки.

Нужно смотреть всё в боевом режиме изнутри имхо со слов "всё пропало" точный диагноз не установить.

Пробуйте, внимательно смотрите текст ошибки.
Цитировать
Анатолий Николаевич
0 #5 Анатолий Николаевич 20.03.2020 05:26
Цитирую АдМинь БагоИскатель:
Класс, просто исчерпывающее описание трабла :-) Чем (рнр скриптом ака смтп/сендмаил) отправляется и чего за ошибку то выдаёт?
смтп ошибка , другие тоже не работают, вычистил все лишнии мейл адреса, и в компонентах и настройках, порты и способы шифрования менял, менял смтп сервера, заводил новые ящики, нифига не получилось
Цитировать
АдМинь БагоИскатель
0 #4 АдМинь БагоИскатель 20.03.2020 04:33
Цитирую Анатолий Николаевич:
Привет дружище! у нас джумла 2.5 на локальном серваке выдает ошибку в перечисленных адресах, установка на другой комп успехов не принесла, апач на винде серверной ,

Класс, просто исчерпывающее описание трабла :-) Чем (рнр скриптом ака смтп/сендмаил) отправляется и чего за ошибку то выдаёт?
Цитировать
Анатолий Николаевич
0 #3 Анатолий Николаевич 20.03.2020 03:24
Привет дружище! у нас джумла 2.5 на локальном серваке выдает ошибку в перечисленных адресах, установка на другой комп успехов не принесла, апач на винде серверной ,
Цитировать
Guest
0 #2 Guest 27.10.2013 00:08
Цитирую qqqwww:
спасибо за статью и особенно за
)))
все правильно! так держать!

Как остроумно, действительно. Аплодирую стоя.
Цитировать
qqqwww
0 #1 qqqwww 13.05.2013 21:40
спасибо за статью и особенно за
)))
все правильно! так держать!
Цитировать

Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Комментарии в блоге
Новое на форуме