Программирование => Perl => Тема начата: alexander70 от 09 Июня 2003, 21:45:53
Название: Проблема со скриптом sendmail
Отправлено: alexander70 от 09 Июня 2003, 21:45:53
Приветствую! У меня проблема со скриптом Sendmail на perl. Я нашёл 2 скрипта на perl и попытался их использовать на хостинге с поддержкой perl - netfirms.com . Для этого я скопировал сам скрипт в директорию cgi-bin и в e-mail форме прописал строчку < form action = "/cgi-bin/pvd-fb.pl" method = "POST" > Но при нажатии на «Отправить» e-mail формы загружается страница с ошибкой file not found 404 Но если нажать на ссылку самого скрипта http://bestshops.netfirms.com/cgi-bin/pvd-fb.pl появляется собственная e-mail форма скрипта . Но как мне впендюрить туда свой e-mail, ума не приложу. Если кто захочет помочь, напишите мне на july71@mail.ru , я вышлю эти 2 скрипта.
Александр
Название: Проблема со скриптом sendmail
Отправлено: Yaroslav от 09 Июня 2003, 22:51:47
напиши тут сам скрипт, тебе помогут
Название: Проблема со скриптом sendmail
Отправлено: alexander70 от 09 Июня 2003, 23:00:05
Легко сказать - напиши. Пока что я новичёк в perl, а sendmail срочно нужен.
Название: Проблема со скриптом sendmail
Отправлено: NCRangeR от 10 Июня 2003, 06:45:16
alexander70 в смысле - исходный текст того, который не работает ;)
Название: Проблема со скриптом sendmail
Отправлено: alexander70 от 10 Июня 2003, 10:04:02
Вот эти 2 скрипта. Скрипты, наверное, рабочие, просто я не знаю как их правильно применить. Буду благодарен за помощь
1-й скрипт (предпочтительный)
#!/usr/bin/perl #------------------------------------------ # Copyright =baxter= 2000 # Все права защищены. # e-mail: baxter@tut.by # url: http://baxter.virtualave.net #------------------------------------------ # bmail v1.0 #------------------------------------------ $mail_prog = \'/usr/sbin/sendmail\' ; # указать правильно! $recip = \'baxter@tut.by\'; # твой почтовый ящик #------------------------------------------ use CGI ; $query = new CGI;
\'; print $query->end_html; exit 0 ; return 1 ; } } #-------------------------------------- #html код можно изменять по своему усмотрению # кроме тегов name="-----" # action="/cgi-bin/bmail/bmail.cgi" - правильно записать путь к скрипту sub form{ print q~
# $referers - пропишите в этой переменной ваш урл и название файла в # котором будет форма , для предотвращения посылки сообщения # вам с локальной машины $referers="http://ваш урл/feedback.html"; $mailprog = \'/bin/sendmail\'; $snmail="ваш e-mail";
if ($buffer) { if ($ENV{\'HTTP_REFERER\'} ne $referers) {exit;} &no_name unless $in{\'name\'}; # нет имени &no_email unless $in{\'e_mail\'}; # нет ящика if ($in{\'e_mail\'}=~ tr/\\/\\\\\\+=~;<>*|`&$!#()[]{}:\'" //) { print "В Вашем адресе (e-mail) содержатся стоп-символы! назад"; exit; } &no_comment unless $in{\'comment\'}; # нет ника &sndmail; exit; }
sub sndmail { print "Ваше сообщение отправлено! назад"; open (MAIL, "|$mailprog -t") || die "Can\'t open $mailprog! \\n";
print MAIL "To: $snmail\\n"; print MAIL "From: $snmail\\n"; print MAIL "Subject: Feedback\\n\\n"; print MAIL < От: $in{\'name\'} ($in{\'e_mail\'}) $in{\'comment\'}
to_the_end close(MAIL);
}
sub no_name { print "Не внесено имя! назад"; exit; } sub no_email { print "Не внесен Ваш адрес (e-mail)! назад"; exit; } sub no_comment { print "Не внесен комментарий! назад"; exit; }
sub formfeed { print "
"; }
Название: Проблема со скриптом sendmail
Отправлено: Kwazar от 10 Июня 2003, 10:59:00
Первый скрипт действительно рабочий. Второй смотреть на стал.
В первом
Название: Проблема со скриптом sendmail
Отправлено: Mog. от 10 Июня 2003, 15:46:47
А чтоб не думалось и обзывай скрипт как хочешь, нужное (и правильное) имя само подставится. Или более радикальный способ. . Тоже работает, отдаёт самому себе, т.е. как раз в нужное место. Это если у тебя используется форма забитая в скрипт. Для первого скрипта она начинается после print~; и заканчивается перед ~ (думаю, что ты уже разобрался :) )
Цитировать
alexander70: как мне впендюрить туда свой e-mail
строка $recip = \'baxter@tut.by\'; # твой почтовый ящик как раз для этого. Меняй адрес на свой и вперед. Первый скрипт должен работать.
Название: Проблема со скриптом sendmail
Отправлено: alexander70 от 10 Июня 2003, 18:46:03
Я заметил что в теле первого скрипта уже есть e-mail форма и, наверное, нужно её использовать Там есть строка
Что она означает? Ведь имя первого скрипта не sendmail, а bmail . Я закачал его в директорию cgi-bin но при открытии этого url со скриптом: http://bestshops.netfirms.com/cgi-bin/Bmail.cgi загружается страница HTTP 404 - Файл не найден Автор скрипта писал что-то о sse или расширении файла shtm А при загрузке страницы с другим скриптом pvd-fb.pl http://bestshops.netfirms.com/cgi-bin/pvd-fb.pl Загружается собственная e-mail форма скрипта Как вообще в Perl делается? Можно использовать внешнюю e-mail форму? Но ведь в теле скрипта уже есть своя e-mail форма. С php гораздо проще в этом смысле. Если кто имеет практический опыт с sendmail на perl, буду признателен за помощь.
Название: Проблема со скриптом sendmail
Отправлено: Yaroslav от 11 Июня 2003, 00:42:23
вот тебе - проверено электроникой ))
#!/usr/bin/perl ##################### Менять можно только тут ######################## $mailprog = "/usr/sbin/sendmail -t"; #Правильный путь $email = \'login@domain\'; #Твое мыло ########################## Тут уже нельзя ############################ $cgiurl = "http://$ENV{\'SERVER_NAME\'}$ENV{\'SCRIPT_NAME\'}";
if ($INPUT{\'send\'}) { &mail; } else { &form; exit; }
sub mail { open (MAIL, "|$mailprog"); print MAIL "To: $email\\n"; print MAIL "From: $INPUT{\'email\'}\\n"; print MAIL "Subject: ot $INPUT{\'name\'}\\n\\n"; print MAIL "test\\n"; close(MAIL); print "Content-type: text/html\\n\\n"; print "test - ok"; }
sub form { print "Content-type: text/html\\n\\n"; print ("