Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Perl (http://www.flasher.ru/forum/forumdisplay.php?f=21)
-   -   Уважаемые, помогите пожалуйста... (http://www.flasher.ru/forum/showthread.php?t=35949)

LisiyGoblin 18.08.2002 22:47

Уважаемые, помогите пожалуйста...
 
Почему то моя программка не работает для отправки письма, вот проверка работает, а вот senmail что-то не пашет....:((
Вот она

тут на сервере лежит сендмэйл:
$sendmail = "/usr/sbin/sendmail -n -t -odq";

sub send_mail {
open(MAIL, "|$sendmail") or die "Не могу открыть программу $sendmail для отправки сообщения. Сообщите об ошибке администратору.";
print MAIL <<EOF;
From: $email
To: edubase\@edubase.ru
Имя: $name
Фамилия: $sourname
Сообщение: $com
EOF
close MAIL;
}

Вот в чем проблема - она письмо не отправляет, да еще и ошибку через die не выдает:( почему? я вот совершенно другой адресс в в переменной отбалды пишу, а она ошибки выдавать не хочет....:( почему?

m1k3 19.08.2002 02:21

Хоть я и баран в Перле...
 
Для начала запусти свою функцию строчкой &send_mail;
Ты наверное для нее пустую строку оставил.
Ну и переменные нужно получить.
Для проверки просто текст поставь.
Посмотри для примера formmail.pl, об этом скрипте информации в избытке.

LisiyGoblin 19.08.2002 16:48

Хотя кто-то и баран в перле но не я....
 
....я просто новенький....
думаешь я не догадался вызвать процедуру?:) если я тут всю программу свою помещу с проверкой да печаткой, много места займет, это просто процедура.....
и обработка переменнызх из вормы тоже сиджишным модулем в процедуре вызванной делается,......

Ребят, посмотрите эту процедуру пожалуйста, процедуру, а не программу..... если ничего не найдете, то пришлю программу....

ну чужие скрипты пока не донадобности, я свою форму хочу, кстати писал из книги,.....

а почемуv die не работает, вчера все-таки письмо доршло отправленное, но почему-то через 1 час после отправки, а не как не флэшерру через 5 секунд.... так вот, почему die не работает? я специально адресс сэндмэйла на серваке другой поставил, не существующий, а он выполнение программы прерывать не хочет и вывод об ошибке не дает...:(

SPV 19.08.2002 16:56

1. From и To есть, а где тип содержимого письма:
From: $email
To: edubase\@edubase.ru
Content-Type: text/plain

2. С заголовками разобрались, а где пустая строка, отделяющая их от тела письма?
From: $email
To: edubase\@edubase.ru
Content-Type: text/plain

Имя: $name
Фамилия: $sourname
Сообщение: $com

LisiyGoblin 19.08.2002 17:03

Ну елски палки......
 
....и наляпали в книжке ошибок..... это я из книги брал...
там ничего про контент-тайп не сказано, между прочем в двух книгах..:)

а что с ошибкой-то почему не выдает.... енто ж не хорошо......

SPV 19.08.2002 17:05

Ошибки должны быть, только не скрипта, а sendmail-а - посмотри в его логах :)

LisiyGoblin 19.08.2002 18:09

Слушай так....
 
.....вот сейчас в руках книгу держу - написано - ф-я die останавливает выполнение программы и выводит сообщение об ошибке....

я думал, что он остановить выполнение моего скрипта и выведет выражение об ошибке.... вот посмотри часть моего скрипта...#!/usr/bin/perl

use CGI;

$query = new CGI;
$sendmail = "/usr/sbin/sendmail";

if(!$query->param()) {
&print_page_start;
&print_form;
&print_page_end;
}
else {
&set_form_vars;
if (&valid_form) {
&send_mail;
&print_page_start;
&print_success;
&print_page_end;
}
else {
&print_page_start;
&print_error_message;
&print_form;
&print_page_end;
}
}

Он чего делает - я бы хотел так:) если ошибка и сэндмэйл не существует - то он прерывает выполнение скрипта и выводит сообщение об ощибке, таким образом не выполняя последующие процедуры
&print_page_start;
&print_success;
&print_page_end;
Во... выразил мысль, понимаешь? А то он берет и выполняет процедуру принт_саксесс , вместо того, чтобы сказать, что сэндмэйл не найден....

SPV 19.08.2002 18:14

Так ведь sendmail то найден... Скрипт успешно его запускает, отдаёт на вход параметры (письмо) и закрывает... С точки зрения перла тут никаких ошибок нет, так как ему всё равно что этот самый sendmail делает - пусть хоть винт форматирует :)

LisiyGoblin 19.08.2002 18:35

А-а-а-а-а........
 
...понял:) А как мне тогда так:) чтобы он ошибку то все-таки выдавал? процедуру чтоли писать отдельную?


и еще по ходу дела вопрос про отладку - почему кода в досе запускаю программу так: perl mail.pl

он не спрашивает про значения из формы, ведь должен просить ввести имя=значение по парам, а не просит и я не могу проверить вторую часть программы.... хелп?:) точно должен, в книге тоже написано....

ну у нас чат получился, внатуре :cool: ....

SPV 19.08.2002 18:52

Проверить из перла отправил ли sendmail письмо можно подсмотрев в его (sendmail-а) логи... если они ведутся, конечно :) Или пробовать перенаправлять ответ из sendmail-а на скрипт и разбирать его (если он вообще отвечает - я не знаю:))

На счёт запроса параметров с клавиатуры, если скрипт запущен не через сервер - первый раз слышу! Это что за умные книжки такие? :) Наверное есть отладчики перловые, которые спрашивают эти параметры, но мне самому пользоваться ими не приходилось. В твоём случае можно изменить процедуру &set_form_vars, где проверять как запущен скрипт и если это не сервер, то спрашивать параметры с клавиатуры...

LisiyGoblin 19.08.2002 19:29

Ну книги-то....
 
....умные так наз-ся: Перл за 24 часа:) и CGI за 24 часа руководство для начинающих..... хоть мужик писал, а то вон купил книгу ЯваСкрипт для чайников - баба писала....

Это вообще ребят вам посмеяться: цитирую:
Глава 3 Базовые понятия программирования на ЯваСкрипт
Тра-ля-ля (так и называется)

Глава 10 Информация от пользователей добывка и промывка
Ну просто экзистенциальная программа..!

Глава 6 Как раскусить cookie.....

Я в конце-концов купил Яваскрипт Для Профессионалов и выучил его:)

ТАк что вот, а книги по перл хорошие Рэйф Колберн и Клинтон Пирс писали.... доступно, советую.

m1k3 19.08.2002 20:28

Отладка перл скриптов
 
Очень полезная прога PerlBuilder. Я пока пользуюсь первой версией, но результаты впечатляют. Вот что она умеет:
В первом окне редактор кода с подсветкой синтаксиса, debugger пошаговое выполнениес просмотром значений переменных в Watch list, даже есть генератор mailform, достаточно навороченный. Во втором окне можно открыть форму, заранее написаную в каком-нибудь редакторе и вписать туда значения переменных, которые будет использовать скрипт, а можно и STDIN использовать. Третье окно - это то, что выдает твой скрипт в формате text/html, ну и четвертое (опциональное) то, что посылается на MAIL. Хотя наверное сколько устройств откроешь, столько и будет дополнительных окон. Конечно ошибок Sendmail-а не отследишь, но очень помогает.
Отчет об ошибках исчерпывающий, встроенный хелп по перлу, нужно отдельно подгрузить с сайта (на английском).
Теперь на Perl-е писать не труднее чем на VB. :)))

m1k3 19.08.2002 20:39

а вообще...
 
Что бы никому мозги не парить, возьми рабочий скрипт, сконфигурируй и запусти на своем сервере. Если не пашет - меняй хостинг, как-то 1 час - это слишком много для письма.
Хостинг у тебя не h1 случайно? Там не больше 1 го письма в минуту и то если обоснуешь для чего тебе нужен sendmail.
Устанешь скрипт отлаживать.

LisiyGoblin 19.08.2002 21:37

m1k3
 
Спасибо, программку сейчас поищу в инете (у меня DzSoftPerEditor стоит)

Нет - хостинг у меня мастаковский www.mastak.ru Я не знаю - не спец в хостингах. Это как - плохой, хороший? просто опыта пока мало....

Не сердись за ламерские вопросы...

m1k3 19.08.2002 21:57

Да чего уж - сам такой.
Если платный хостинг, то все должно работать, может ты ключи к sendmailу указал неправильные или они не поддерживаются.
Вот вычитал, и ты почитай.
#=============================================#== Отправить сообщение по E-mail
# Пример: &sendmail($email, $subject, $text)
#=============================================
sub sendmail
{ my ($email, $subject, $data) = @_;
my $login = 'merlin'; # Ваш логин на сервере
my $From = 'merlin@mastak.ru'; # С какого email отправлять
my $mail = "/usr/sbin/sendmail -t -f$login"; # Путь к sendmail
local(*SM);
if (open(SM, "|$mail")) {
print SM "From: $From\n";
print SM "To: $email\n";
print SM "Subject: $subject\n";
print SM "Content-Type: text/plain; charset=Windows-1251\n\n";
print SM "$data\n";
close(SM);
} else { die "Ошибка: не найден $mail"; }
}
Это пример функции для отправки email на мастаке, в ФАКе нашел. Обрати внимание, что для вызова sendmaila нужно указать свой логин на сервере и ключи немного другие. А так все как у тебя :)))
Просто?
Удачи.

LisiyGoblin 20.08.2002 12:14

Да...
 
....конечно просто, я это кстати еще до твоего сообщения вычитал, да с группой поддержки разобрал, просто свою хочу форму, и программу а не такую:) ну если выхода не будет, то сделаю....

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

m1k3 20.08.2002 22:48

давай, проверю...
 
хостинг вражеский netfirms.com, бесплатный...
я свой скрипт уже отладил...

LisiyGoblin 21.08.2002 13:57

Да не, уже не надо, спасибо..... заработал, отправил моментально, может это у них сэндмэйл был загружен вникуда.... мало-ли


Часовой пояс GMT +4, время: 15:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.