Forum Webscript.Ru

Программирование => Perl => Тема начата: от 26 Июля 2001, 15:03:46

Название: Помогите!!!!!!
Отправлено: от 26 Июля 2001, 15:03:46
Привет
Прошу не отвечать кратко так как я хуже-некуда догоняю в Perle
Проблемма такая: я посылаю данные формы серверу

Форма для отправки по почте


Сообщение:








Затем хочу их обработать и отправить в виде письма из под WINDOWS а не UNIX
#!/usr/bin/perl

use CGI qw(:standard) ;
    print header();
    print "Simple message";


    use Net::SMTP;

    $smtp = Net::SMTP->new(\'www.lunch.ru\');

    $smtp->mail($ENV{USER});
    $smtp->to(\'dmitry\\@lunch.ru\');

    $smtp->data();
    $smtp->datasend("To: dmitry\\@lunch.ru
");
    $smtp->datasend("
");
    $smtp->datasend("A simple test message
");
    $smtp->dataend();

    $smtp->quit;

И ни фига ничего не приходит!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Название: Помогите!!!!!!
Отправлено: lodevar от 26 Июля 2001, 15:11:04
Мож тама нет такого модуля...

А я, например, делал так:

if(open(MAIL,"|/usr/sbin/sendmail lodevar2\\@mtu-net.ru"))
{
 print MAIL "Тру ля-ля!
";
 close(MAIL);
} else { print "error:$!"; }

Пока что работает :-)
Название: Помогите!!!!!!
Отправлено: от 26 Июля 2001, 15:49:34
Какого модуля нет? где нет? а где он должен быть и где его взять?

Как я понимаю программа sendmail  работает пол UNIX
У меня стоит задача отправить из-под WINDOWS

Заранее спасибо за любой ответ
Название: Помогите!!!!!!
Отправлено: AliMamed от 26 Июля 2001, 16:02:32
Цитировать
Dmitry (26-07-2001 15:49):
Какого модуля нет? где нет? а где он должен быть и где его взять?
Net::SMTP в папке, где у тебя perl установлен.

Цитировать

Как я понимаю программа sendmail  работает пол UNIX
У меня стоит задача отправить из-под WINDOWS

sendmail есть и под выньдофз.
Название: Помогите!!!!!!
Отправлено: lodevar от 26 Июля 2001, 16:07:40
Ну а чего хоть пишет-то?
Название: Помогите!!!!!!
Отправлено: от 26 Июля 2001, 16:59:29
Насчет sendmail под виндовс - обязательно поищу, он упростит прогу. Посмотрел в дир. perla,  есть там lib
et а в ней как-раз и нет Net::SMTP. Теперь ищу.

А пока что прога возвращает в броузер "Simple message" и никаких сообщений об ошибках. Интересно почему он не ругается если не находит Net::SMTP.
Название: Помогите!!!!!!
Отправлено: от 26 Июля 2001, 18:16:46
Привет еще раз , нашел я библиотеку use Mail::Sender;
теперь прога выглядит так но все равно ничего не отсылает!!
У меня уже мозги плавяться, help, куча способов - никакие не работают, и sendmail для виндофз найти не могу

заменил то всего я несколько строчек
{smtp => \'mail.smtp.host\'})  на {smtp => \'www.lunch.ru\'})
\'me@smtp.host\' на \'dmitry@lunch.ru\'
итого имею:

#!/usr/bin/perl

use CGI qw(:standard) ;
    print header();
    print "Simple message";


use Mail::Sender;

# создаем объект с указанием SMTP сервера
ref ($sender = new Mail::Sender {smtp => \'www.lunch.ru\'})
or die "Error($sender) : $Mail::Sender::Error
";

# headers -
#   определение дополнительного заголовка письма !!!
$sender->Open(
 {from => \'dmitry@lunch.ru\',
 to => \'dmitry@lunch.ru\',
 subject => \'Mail::Sender.pm - new module\',
 headers => "MIME-Version: 1.0\\r
Content-type: text/plain;
 charset=KOI8-R\\r
Content-Transfer-Encoding: 8bit"})
or die $Mail::Sender::Error,"
";

$sender->Send(<<\'*END*\');

Вот новый модуль Mail::Sender.
Он обеспечивает объект, реализующий интерфейс
для посылки писем через SMTP сервер.

Он использует прямую связь через Socket,
так что ему не нужна никакая дополнительная программа.

Author:: Jan Krynicky  http://Jenda.Krynicky.cz
*END*

$sender->Close;
Вот так
Название: Помогите!!!!!!
Отправлено: AliMamed от 26 Июля 2001, 18:57:08
сказал же, sendmail заюзай.

http://userguide.webservis.ru/homeserver-apache-forprint.shtml

здесь как ставить sendmail на винды и где его брать
Название: Помогите!!!!!!
Отправлено: Chs от 26 Июля 2001, 21:43:47
Цитировать
AliMamed (26-07-2001 18:57):
сказал же, sendmail заюзай.

Или MIME::Lite. С помощью него можно отправлять сообщение как через SMTP, так и используя sendmail.
Название: Помогите!!!!!!
Отправлено: от 27 Июля 2001, 11:34:56
Ура все заработало, осталась маленькая проблемма:
письма сгенерированные с использованием русского языка не читаются? Где вообще можно прочитать про управление кодировками?
Заранее спасибо
Сейча прога выглядит так:
#!/usr/bin/perl

use CGI qw(:standard) ;
    print header();
   


$mail_prog = \'c:/usr/sbin/sendmail\'; # путь к sendmail
$from_name = \'Администратор\';
$from_mail = \'dmitry@lunch.ru\';
$to_name = \'Посетитель\';
$to_mail=\'dmitry@lunch.ru\';
$subject=\'test mail from sendmail programm\';

$message = <
To: "$to_name" <$to_mail>
From: "$from_name" <$from_mail>
Subject: $subject
Content-Type: text/plain; charset=koi8-r
Не отвечайте на это письмо!
Это тестовое сообщение системы.

С уважением, $from_name
END
open (MAIL, "| $mail_prog -f $from_mail $to_mail") || die "Mail: $!";
print MAIL $message;
print "Ваш заказ отправлен";
close MAIL;
Название: Помогите!!!!!!
Отправлено: lodevar от 27 Июля 2001, 11:45:37
А возня с кодировками - это уже головная боль клиента.
Название: Помогите!!!!!!
Отправлено: от 27 Июля 2001, 12:03:51
Все-таки хотелось-бы поподробнее
мне наверно нужно в какой-то кодировке передавать мэйл, что-б всегд его могли прочесть
Наверно существую каки-ето команды?
Не хочу головной боли ни для себя ни для клиента
Название: Помогите!!!!!!
Отправлено: AliMamed от 27 Июля 2001, 12:14:06
Цитировать
Content-Type: text/plain; charset=koi8-r
Не отвечайте на это письмо!
Это тестовое сообщение системы.

чтото я не понял - у тебя скрипт-то сам в какой кодировке?
Название: Помогите!!!!!!
Отправлено: от 27 Июля 2001, 12:28:44
Так я вроде в скрипте нигде и не указывал кодировку самого скрипта, а это

Content-Type: text/plain; charset=koi8-r
Не отвечайте на это письмо!
Это тестовое сообщение системы.

приходи в виде письма

To: "оНЯЕРХРЕКЭ"
From: "юДЛХМХЯРПЮРНП"
Subject: test mail from sendmail programm
"Content-Type: text/plain; charset=koi8-r
MIME-Version: 1.0
";
мЕ НРБЕВЮИРЕ МЮ ЩРН ОХЯЭЛН!
щРН РЕЯРНБНЕ ЯННАЫЕМХЕ ЯХЯРЕЛШ.

я СБЮФЕМХЕЛ, юДЛХМХЯРПЮРНП

Так можно сделать что б читалось?
Название: Помогите!!!!!!
Отправлено: lodevar от 27 Июля 2001, 12:40:05
Цитировать
Dmitry (27-07-2001 12:28):
Так я вроде в скрипте нигде и не указывал кодировку самого скрипта,...
А вот поставь.
Например у меня виндовая на сайте стоит, и в outlook\'е видно в виндовой кириллице. Вот.
Название: Помогите!!!!!!
Отправлено: от 27 Июля 2001, 13:00:01
А когда я размещу на Unix сервере свой код  c установленной виндовой кодировкой он будет работать?
(пишуто я под виндами но хоститься он будет в другом месте)
Нет какого-нибудь базового кода чтоб и там и здесь правильно работал?
Название: Помогите!!!!!!
Отправлено: lodevar от 27 Июля 2001, 13:13:52
Здрасти.... Ты можешь хоть турецкую туда загнать. Серверу все равно! А вот пользователь будет уже решать в каком виде это смотреть. По-этому в Эксплорере есть пункт Вид->Вид кодировки.
:-)
Название: Помогите!!!!!!
Отправлено: от 27 Июля 2001, 13:32:45
Понятно, тогда последний самый глупый вопрос:
как енто сделать?
Название: Помогите!!!!!!
Отправлено: lodevar от 27 Июля 2001, 13:39:36
Вот это, например, фрагментик моего скрипта readit.cgi:
print "Content-Type: text/html

";
print <



........

Можно, конечно, и по другому...
Название: Помогите!!!!!!
Отправлено: AliMamed от 27 Июля 2001, 13:45:25
Content-Type: text/plain; charset=windows-1251
Не отвечайте на это письмо!
Это тестовое сообщение системы.

и все должно быть ок.
Название: Помогите!!!!!!
Отправлено: lodevar от 27 Июля 2001, 13:51:29
вот-вот.
Название: Помогите!!!!!!
Отправлено: от 27 Июля 2001, 14:44:37
Ну наконец разобрался, спасибо за помощь
Название: Помогите!!!!!!
Отправлено: Puma от 16 Июня 2004, 17:10:34
Это все хорошо!
А знает кто-нибудь как законектиться и отправиться письмо smtp  через анонимный прокси сервер?
А то на мой ip-адрес smtp обиделся и не хочет с ним разговаривать!
Название: Помогите!!!!!!
Отправлено: ThE0ReTiC от 16 Июня 2004, 17:49:19
Puma
и какого ты поднял тему трехгодичной давности?
Название: Помогите!!!!!!
Отправлено: NeoNox от 16 Июня 2004, 17:55:32
Puma на анонимный прокси он тем более обидится.
Не стоит обижать сервера а тем более поднимать темы трехлетней давности с глупым названием.
IO::Socket тебе в руки.
А вообще, никак ;)