Прошу помощи по php (mail)

12
S2
На сайте с 10.03.2010
Offline
63
1228

Здравствуйте. Прошу помощи в связке php mail + DLE. Ситуация такова : пытаюсь на движке DLE из модуля "обратная связь" отправить админу сайта письмо. Двиг пишет "отправлено", а на почте пусто.

Я создал файлик proba.php с таким содержимым:

<?php

error_reporting(E_ALL); // Вывод ошибок.
$to = 'admin@domen.com';
$subject = 'Тема письма';
$message = 'проверка';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=koi8-r' . "\r\n";
$headers .= 'To: user <admin@domen.com>' . "\r\n";
$headers .= 'From: server <server@example.com>' . "\r\n";
mail($to, $subject, $message, $headers);
?>

в баше пишу php proba.php в итоге мгновенно на admin@domen.com приходит письмо. Движок перепроверил. Вроде все в порядке. В iptables 25 порт открыт.

Да, забыл написать: мылер- exim. в связке с ispmanager.

Выкурил кучу мануала, так ничего не смог сделать. Тыкните носом где копать :( Буду очень благодарен.:(

KU
На сайте с 17.07.2008
Offline
251
#1

Ящик server@example.com создан на сервере?

Что в логах?

Хостинг ( https://good-host.net ) / Linux VPS ( https://good-host.net/vps ) / Windows VPS ( https://good-host.net/windows-vps ) / Выделенные серверы ( https://good-host.net/dedicated ) 14 лет онлайн!
Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#2

sasha2010, я думаю что у вас не верно из mail() передается FROM (не в теле вашего сценария, а например в php.ini там где описан sendmail какие-то ключи левые, либо сборка exim их не понимает....) или может быть EXIM запрещает отправку от определенного UID в системе.... Вам бы посмотреть , что в логе почтового сервера происходит через который вы отправляете почту. Там может содержаться ошибка которая ответит на все ваши вопросы.

Есть около 15.000 ipv4 !!! (http://onyx.net.ua/price.php#ipv4) Качественный хостинг с 2005 года - лучшее клиентам! (http://onyx.net.ua/)
S2
На сайте с 10.03.2010
Offline
63
#3

KM.UA, в www домена прописан тот же п.ящик что и в админке dle.

Romka_Kharkov, думаю exim не причем, т.к. перед этим стоял sendmail - та же фигня

Сейчас гляну лог exim-а

Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#4

Попробуйте поработать так:


require_once "Mail.php";

$g_from = "email@from.com";
$email = "email@to.com";

$smtp = Mail::factory('smtp', array ('host' => $g_smtp, 'auth' => true, 'username' => $g_user, 'password' => $g_pass));

$headers = array ('From' => $g_from, 'To' => $email, 'Subject' => "Subject There");

$body = " test"

$mail = $smtp->send($email, $headers, $body);

$g_smtp , $g_user, $g_pass - Берется из основного конфига, тут описана авторизация клиента по SMTP. В данном случае на SMTP сервере обязательно наличие физического акаунта с нужным паролем.

Romka_Kharkov добавил 11.07.2011 в 19:39

sasha2010:

Romka_Kharkov, думаю exim не причем, т.к. перед этим стоял sendmail
Сейчас гляну лог exim-а

Мне кажется , что PHP таким образом не верно передает отправителя, скорее всего рождается что-то типа nobody@xxxxxxx.com или www@xxxxxxxx.com смотря как ваш апач отрабатывает, раз вы говорите что отправляя из CLI все нормально....

iHead
На сайте с 25.04.2008
Offline
137
#5

0. смотрите логи почтового сервера, который принимает почту от функции mail (обычно локальный сервер, в вашем случае, видимо, exim)

1. в заголовках не забывайте транслировать кириллицу в base64, т.е. правильно формируйте заголовки

2. у функции mail есть пятый параметр. воткните туда '-fмыло_отправителя'

Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)
S2
На сайте с 10.03.2010
Offline
63
#6

вот что в логе exim :

2011-07-11 19:13:15 exim 4.63 daemon started: pid=15565, -q1h, listening for SMTP on port 25 (IPv6 and IPv4)
2011-07-11 19:13:15 Start queue run: pid=15566
2011-07-11 19:13:15 1Qfz2y-000286-ID Message is frozen
2011-07-11 19:13:15 1QfxTw-0001yG-7O Message is frozen
2011-07-11 19:13:15 1QgIcr-0003uo-Ki Message is frozen
2011-07-11 19:13:15 1QfzXc-0002Du-MM Message is frozen
2011-07-11 19:13:15 1QfzGi-0002BW-Fx Message is frozen
2011-07-11 19:13:15 1Qg4su-0002r2-S1 Message is frozen
2011-07-11 19:13:15 1Qg00V-0002JK-Bl Message is frozen
2011-07-11 19:13:15 End queue run: pid=15566
2011-07-11 19:13:47 1QgJ7D-00043L-9I <= apache@server.com U=apache P=local S=1168 from <apache@server.com> for xxx@list.ru
2011-07-11 19:13:48 1QgJ7D-00043L-9I => xxx@list.ru R=dnslookup T=remote_smtp H=mxs.mail.ru [94.100.176.20] C="250 OK id=1QgJ7G-0002Wj-00"
2011-07-11 19:13:48 1QgJ7D-00043L-9I Completed

не понимаю почему exim шлет письмо на xxx@list.ru если должно быть отправлено на admin@domen.com

M
На сайте с 16.09.2009
Offline
278
#7
sasha2010:
не понимаю почему exim шлет письмо на xxx@list.ru если должно быть отправлено на admin@domen.com

Вы уверены, что это именно _то_ письмо - или просто выбрали последние записи лога?

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
S2
На сайте с 10.03.2010
Offline
63
#8

myhand, я проверил 4 раза и проследил по времени в логе exim - да это то письмо

Andreyka
На сайте с 19.02.2005
Offline
822
#9

mail.ru славен тем, что иногда молча дропает почту

попробуй более вменяемый ящик, например на gmail

Не стоит плодить сущности без необходимости
S2
На сайте с 10.03.2010
Offline
63
#10

тут в другом ерунда оказывается. С других акков где стоит DLE все работает на ура... Хм... А этот не пойму почему... п.ащик существует локально и продублирован в двиге и имеет вид admin@domen.com , а php (mail) шлет письма (по идее шлет) на адрес клиента указанный в billmgr. Полтергейст блин. Менять, переустанавливать ящик admin@domen.com в isp и админке dle пробовал, а в логе exim все равно письма шлются на биллинговый емейл клиента... Изменяесть только в виртуалхосте httpd.conf

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий