После установки Joomla, форум перестал отсылать уведомления по е-мэйл. Джумлу не интегрировал. Почту настроил под smtp. И на Джумле и на форуме один и тот же клиент smtp. Раньше отправлось а после установки Джумлы прям ни в какую.
Подскажите пожалуйста, в чем может быть проблема?
Спасибо.
Добавлено через 23 часа 31 минуту
Полазил в поиске нарыл:
Почему не доходят письма до большинства бесплатных почтовых серверов?
Все дело в том, что многие бесплатные почтовые службы не принимают писма напрямую с так называемых "одиночных компьютеров", хотя если отправлять через SMTP-сервер какого нть провайдера - нормально проходят.
Провайдеровские серваки обычно находятся в довереных списках бесплатных почтовых служб, хотя бывают и исключения (чаще для забугорных) ...
СПОСОБ №1 (простой и быстрый)
Ложим в корень сайта/форума файл .htaccess и в нем пишем/добавляем:
php_value SMTP "smtp.provider.ru"
СПОСОБ №2 (если 1-й не работает)
Если у вас не работает .htaccess или PHP стоит не как модуль Апача, то делаем следующее: (проверялось на 3.0.1)
Открываем includes/functions.php
Ищем:
code:
$sendmail_path = @ini_get('sendmail_path');
if ($sendmail_path === '')
{
ВЫШЕ вставляем:
ini_set("SMTP", "smtp.provider.ru");
Сохраняем, заливаем, пробуем.
PS smtp.provider.ru - SMTP-сервер провайдера, к которому подключен хостинг...
Есть еще что-то вроде хака: http://netadmin.ws/forum/showthread....&threadid=9723
Первый вариант не сработал.
Второй тем более т.к. у меня нет ничего подобного в
includes/functions.php
У меня там есть только
Code:
global $vbulletin;
if (!class_exists('vB_Mail'))
{
require_once(DIR . '/includes/class_mail.php');
}
if ($vbulletin->options['usemailqueue'] AND !$notsubscription)
{
$mail =& vB_QueueMail::fetch_instance();
}
else if ($vbulletin->options['use_smtp'])
{
$mail =& new vB_SmtpMail($vbulletin);
}
else
{
$mail =& new vB_Mail($vbulletin);
}
$mail->start($toemail, $subject, $message, $from, $uheaders, $username);
$mail->send();
}
Ещё раскопал:
в includes/functions.php функцию vb_send_mail меняем полностью на то что ниже
Code:
// fStrange hack
function vb_send_mail($to,$subject,$message,$additional_hea
ders="",$additional_parameters="")
{
require("smtp/smtp.php");
$from=getenv("USER")."@".getenv("HOSTNAME"); /* Change this to your address like "me@mydomain.com"; */
$from="******@******.ru";
$smtp=new smtp_class;
$smtp->direct_delivery=0; /* Set to 1 to deliver directly to the recepient SMTP server */
$smtp->timeout=10; /* Set to the number of seconds wait for a successful connection to the SMTP server */
$smtp->data_timeout=0; /* Set to the number seconds wait for sending or retrieving data from the SMTP server.
Set to 0 to use the same defined in the timeout variable */
$smtp->host="****.****.ru"; /* SMTP server address */
$smtp->user = "******";
$smtp->password = "******";
$smtp->pop3_auth_host = "*******";
$smtp->debug=0; /* Output dialog with SMTP server */
$smtp->direct_delivery=0; /* Deliver directly to the recipients destination SMTP server */
/*
* If you need to use the direct delivery mode and this is running under
* Windows or any other platform that does not have enabled the MX
* resolution function GetMXRR() , you need to include code that emulates
* that function so the class knows which SMTP server it should connect
* to deliver the message directly to the recipient SMTP server.
*/
if($smtp->direct_delivery)
{
if(!function_exists("GetMXRR"))
{
/*
* If possible specify in this array the address of at least on local
* DNS that may be queried from your network.
*/
$_NAMESERVERS=array();
include("getmxrr.php");
}
/*
* If GetMXRR function is available but it is not functional, to use
* the direct delivery mode, you may use a replacement function.
*/
/*
else
{
$_NAMESERVERS=array();
if(count($_NAMESERVERS)==0)
Unset($_NAMESERVERS);
include("rrcompat.php");
$smtp->getmxrr="_getmxrr";
}
*/
}
if($smtp->SendMessage(
$from,
array($to),
array("From: $from","To: $to","Subject: $subject","Date: ".strftime("%a, %d %b %Y %H:%M:%S %Z")),
$message))
return TRUE;
else
return FALSE;
}
// fStrange hack end
$from="****@*****.ru";
$smtp->host="****.****.ru";
$smtp->user = "******";
$smtp->password = "******";
$smtp->pop3_auth_host = "*******";
в этих строчках вписать настройки своего smtp
нужно создать в папке includes каталог smtp
и добавить туда файл smtp.php временно лежит в
http://fclan.ru/tmp/smtp.zip стандартный smtp класс скачан с
http://phpclasses.segmenta.ru
Но у меня нет в файле includes/functions.php функции vb_send_mail :(
Еще раскапал :
Code:
in includes/mail.php find
var $smtpHost = "smtp.example.com";
var $smtpPort = 25;
var $smtpUser = false;
var $smtpPass = false;
var $smtpSocket = null;
Edit to the correct values
Example
var $smtpHost = "smtp.example.com";
var $smtpPort = 25;
var $smtpUser = user@domain.com;
var $smtpPass = password;
var $smtpSocket = null;
save and upload
find in includes/functions.php
if (false) // will eventually use $vboptions to determine this
Change too
if (true) // will eventually use $vboptions to determine this
Send a test email to ensure that it is working.
save and upload
Но у меня нет файла mail.php в папке includes
Версия 3.6.8. Как решить проблему? Подскажите пожалуйста.
Только прошу без шуток, если не знаете решения, лучше вообще не пишите. Был в поиске, проблему так и не решили.
Спасибо.