Форум программистов, компьютерный форум, киберфорум
Perl
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 23
1

Как узнать код ошибки sendmail, и что он там возвращает?

07.01.2020, 12:55. Показов 1316. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Интернет-магазин, форма приёма заказов. Надо, чтобы одно письмо шло админстратору, второе - кленту.

Администртору - пишу:

open (SENDMAIL, "|/usr/sbin/sendmail -t") or die "<p align=center>Ошибка приёма заказа: sendmail not ready</p>";
print SENDMAIL "From: САЙТ.RU <no-reply\@сайт.ru>\n";
print SENDMAIL "To: The Admin <1\@сайт.ru>\n";
print SENDMAIL "Subject: Новый заказ на сайте!\n\n";
print SENDMAIL "$datatext";
close (SENDMAIL) or print "<p align=center>Ошибка приёма заказа!</p>";

Письмо удачно приходит.
Клиенту отпраляю письмо так же, только данные взяты из кук:

@cuu=split('=',$cookieuser);
@cuf=split('=',$cookiephone);
@cue=split('=',$cookieemail);

open (SNDMAIL, "|/usr/sbin/sendmail") or print "<p align=center>Ошибка отправки почты Вам: sendmail not ready<p>";
print SNDMAIL "From: Интернет-магазин САЙТ.RU <no-reply\@сайт.ru>\n";
@cuee=split(/@/,$cue[1]);
print SNDMAIL "To: $cuu[1] <$cuee[0]\@$cuee[1]>\n";
print SNDMAIL "Subject: Ваш заказ на сайте САЙТ.RU\n\n";
print SNDMAIL "$datatext";
my $sgsent="Письмо с Вашим заказом направлено на электронную почту $cue[1].";
close (SNDMAIL) or $msgsent="Ошибка отправки почты по адресу $cuee[0]\@$cuee[1].";

print "<p align=center>Уважаемый(ая) $cuu[1], Ваш заказ принят!<br><br>Мы свяжемся с Вами по телефону $cuf[1] в рабочее время для подтверждения заказа.<br><br>$msgsent</p>";


Письмо не доходит, сайт загружается так:

Уважаемый(ая) Володарь (имя клиента из кук), Ваш заказ принят!

Мы свяжемся с Вами по телефону +79ОО765741Щ (телефон из кук) в рабочее время для подтверждения заказа.

Ошибка отправки почты по адресу
адрезз@yandex.ru (э-мыло из кук).

Второе письмо не приходит, не могу понять, почему.

Как получить строку, которую sendmail (либо любая внешняя программа) возвращает?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2020, 12:55
Ответы с готовыми решениями:

Как узнать что сайт под фильтром или был там?
Интересует вот что: как узнать был ли сайт под фильтрами яндекса вообще и когда и под какими или...

Тело POST запроса. Как самому узнать, что там должно быть?
Всем здрасти! У меня следующая делема... Нагуглил POST запрос на авторизацию на одноклассниках....

Как узнать что возвращает предикат
% замена элемента с указанной позицией list_replace(X,1,,). list_replace(X,I,,):-I1 is...

Как переделать код что б там были указатели !
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;iomanip&gt; #include &lt;math.h&gt; using namespace...

4
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
08.01.2020, 00:58 2
Цитата Сообщение от Вова Абрамов Посмотреть сообщение
Как получить строку, которую sendmail (либо любая внешняя программа) возвращает?
Самое простое - перенаправить в файл поток вывода и поток ошибок
Цитата Сообщение от Вова Абрамов Посмотреть сообщение
open (SNDMAIL, "|/usr/sbin/sendmail")
Perl
1
open (SNDMAIL, "|/usr/sbin/sendmail > /path/to/log 2>&1")
Ещё можно в лог сендмайловский заглянуть, может там что...
0
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 23
08.01.2020, 10:36  [ТС] 3
Цитата Сообщение от easybudda Посмотреть сообщение
Самое простое - перенаправить в файл поток вывода и поток ошибок

Perl
1
open (SNDMAIL, "|/usr/sbin/sendmail > /path/to/log 2>&1")
Ещё можно в лог сендмайловский заглянуть, может там что...
Файл создаётся.
Если
Perl
1
open (SNDMAIL, "|/usr/sbin/sendmail > /path/to/log 2>&1")
, то в файл пишется следующее:

Exim is a Mail Transfer Agent. It is normally called by Mail User Agents,
not directly from a shell command line. Options and/or arguments control
what it does when called. For a list of options, see the Exim documentation.


Если
Perl
1
open (SNDMAIL, "|/usr/sbin/sendmail > /path/to/log")
, то файл создаётся пустой.

Лог сендмейловский на сервере.
0
5984 / 1993 / 323
Регистрация: 10.12.2013
Сообщений: 6,874
08.01.2020, 12:51 4
Цитата Сообщение от Вова Абрамов Посмотреть сообщение
Лог сендмейловский
никакого sendmail в системе нет, это exim. И слава богу ( аллаху? вицлипуцли ? )
0
0 / 0 / 0
Регистрация: 22.08.2014
Сообщений: 23
09.01.2020, 10:31  [ТС] 5
Цитата Сообщение от volodin661 Посмотреть сообщение
никакого sendmail в системе нет, это exim. И слава богу ( аллаху? вицлипуцли ? )
Спасибо. Я лишь не указал ключ -t.

Читаю man exim:
If no options are present that require a specific action ... and there are no
arguments on the command line, Exim outputs a brief message about
itself and exits.


Теперь всё работает.
0
09.01.2020, 10:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2020, 10:31
Помогаю со студенческими работами здесь

Как в PHP определить причину ошибки? где смотреть логи или что там еще?
ситуация такова. есть работающее приложение пхп. пытаюсь перенести его на свою локальную машину....

Как узнать код ошибки
Знакомая принесла ноут, мол там выскакивает синий экран время от времени, включаю ноут жду когда...

Как узнать код ошибки обновлений?
Здравствуйте,подскажите пожалуйста как узнать коды ошибок в журнале обновлений?:) Винда...

Подскажите пожалуйста, как программным путем можно узнать код ошибки???
Подскажите пожалуйста, как программным путем можно узнать код ошибки???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru