отправка почты через php

#
отправка почты через php
есть проблема с кодировкой при отправке почты через самописную форму обратной связи. супорт посоветовал использовать родной класс хостцмс.
<?php

$kernel = & singleton('kernel');



$to = 'xyz@localhost.ru';

$from = 'admin@localhost.ru';

$subject = 'Тема письма';

$text = 'Текст письма';

$file_path_name = array();

$file_path_name[0]['filepath'] = CMS_FOLDER . 'file.jpg';

$file_path_name[0]['filename'] = "file.jpg";

$file_path_name[0]['Content-ID'] = "123456";

$file_path_name[0]['Content-Disposition'] = "attachment"; // attachment или inline

$file_path_name[0]['Content-Type'] = "application/octet-stream";



$param = array();

$param['sender_name'] = "Имя отправителя";



$result = $kernel->SendMailWithFile($to, $from, $subject, $text, $file_path_name, 'text/plain', $param);



if ($result)

{

     echo "Отправка письма выполнена успешно";

}

else

{

     echo "Ошибка отправки письма";

}

?>


создаю у себя обычный php-файл и вставляю этот код, потом заливаю по фтп на сайт. в браузере пишу адрес странички, но письмо не отправляется.
вопрос: можно ли так использовать данный класс или же нужно создавать в панели администратора свою страницу с этим кодом?
Модератор
#
Re: отправка почты через php
В таком виде работать не будет. Нужно так:

<?php
define('CMS_FOLDER', dirname(__FILE__) . '/');

// Подключаем файл конфигурации, если он есть
$config_path = CMS_FOLDER . 'hostcmsfiles/config_db.php';

if (is_file($config_path))
{
   require_once($config_path);
}

require_once(CMS_FOLDER . "modules/Kernel/Kernel.php");

$kernel = & singleton('kernel');
$to = 'xyz@localhost.ru';
$from = 'admin@localhost.ru';
$subject = 'Тема письма';
$text = 'Текст письма';
$file_path_name = array();
$file_path_name[0]['filepath'] = CMS_FOLDER . 'file.jpg';
$file_path_name[0]['filename'] = "file.jpg";
$file_path_name[0]['Content-ID'] = "123456";
$file_path_name[0]['Content-Disposition'] = "attachment"; // attachment или inline
$file_path_name[0]['Content-Type'] = "application/octet-stream";

$param = array();
$param['sender_name'] = "Имя отправителя";

$result = $kernel->SendMailWithFile($to, $from, $subject, $text, $file_path_name, 'text/plain', $param);

if ($result)
{
echo "Отправка письма выполнена успешно";
}

else
{
echo "Ошибка отправки письма";
}
?>
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: отправка почты через php
получается такая ошибка.
Ошибка при соединении с БД!
Ошибка "Unknown MySQL server host 'DB_HOST' (1)" при соединении с БД.

Проверьте доступность сервера БД и параметры соединения с БД!

может ли она быть из-за того, что я убрал вот этот кусок или же эта ошибка из файла конфигурации?

$file_path_name[0]['filepath'] = CMS_FOLDER . 'file.jpg';
$file_path_name[0]['filename'] = "file.jpg";
$file_path_name[0]['Content-ID'] = "123456";
$file_path_name[0]['Content-Disposition'] = "attachment"; // attachment или inline
$file_path_name[0]['Content-Type'] = "application/octet-stream";


Модератор
#
Re: отправка почты через php
skident,

Подозреваю, что у Вас версия системы младше 5.9.13. Если да, то строку:

$config_path = CMS_FOLDER . 'hostcmsfiles/config_db.php';


замените на:

$config_path = CMS_FOLDER . 'config_db.php';
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: отправка почты через php

<?php
define('CMS_FOLDER', dirname(__FILE__) . '/');

// Подключаем файл конфигурации, если он есть
$config_path = CMS_FOLDER . 'config_db.php';
if (is_file($config_path)){
require_once($config_path);
}

require_once(CMS_FOLDER . "modules/Kernel/Kernel.php");

$kernel = & singleton('kernel');
$to = 'skident@mail.ru';
$from = 'admin@localhost.ru';
$subject = 'Тема письма';
$text = 'Текст письма';

$result = $kernel->SendMailWithFile($to, $from, $subject, $text, 'text/plain');

if ($result){
echo "Отправка письма выполнена успешно";
}else{
echo "Ошибка отправки письма";
}
?>


немного укоротил так как прикреплять файлы мне не нужно.
пишет "Отправка письма выполнена успешно", но на сам ящик письмо не приходит.
Модератор
#
Re: отправка почты через php
Проверил локально. Письмо приходит.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: отправка почты через php
создаю файл mail.php копирую туда код. перехожу в браузер опять пишет все ок, но письмо не приходит.

код, тот что в предыдущем моем сообщении
Модератор
#
Re: отправка почты через php
skident,
значит проблема с отправкой на хостинге, обратитесь в поддержку хостинга, нужно смотреть почтовые логи
#
Re: отправка почты через php
выяснил методом тыка, что на mail.ru почта не отправляется - почему незнаю. поменял на и-мейл получателя на яндексовский, и письмо тут же прилетело.

Не подскажите, что может быть с мейл.ру?

Кстати спасибо, за помощь в этом вопросе
Модератор
#
Re: отправка почты через php
skident писал(а):
Не подскажите, что может быть с мейл.ру?


Я думаю будет логично уточнить это в ТП Mail.ru

skident писал(а):
Кстати спасибо, за помощь в этом вопросе


Всегда пожалуйста.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
Авторизация