Forum Webscript.Ru
Программирование => Perl => Тема начата: от 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;
И ни фига ничего не приходит!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
Мож тама нет такого модуля...
А я, например, делал так:
if(open(MAIL,"|/usr/sbin/sendmail lodevar2\\@mtu-net.ru"))
{
print MAIL "Тру ля-ля!
";
close(MAIL);
} else { print "error:$!"; }
Пока что работает :-)
-
Какого модуля нет? где нет? а где он должен быть и где его взять?
Как я понимаю программа sendmail работает пол UNIX
У меня стоит задача отправить из-под WINDOWS
Заранее спасибо за любой ответ
-
Dmitry (26-07-2001 15:49):
Какого модуля нет? где нет? а где он должен быть и где его взять?
Net::SMTP в папке, где у тебя perl установлен.
Как я понимаю программа sendmail работает пол UNIX
У меня стоит задача отправить из-под WINDOWS
sendmail есть и под выньдофз.
-
Ну а чего хоть пишет-то?
-
Насчет sendmail под виндовс - обязательно поищу, он упростит прогу. Посмотрел в дир. perla, есть там lib
et а в ней как-раз и нет Net::SMTP. Теперь ищу.
А пока что прога возвращает в броузер "Simple message" и никаких сообщений об ошибках. Интересно почему он не ругается если не находит Net::SMTP.
-
Привет еще раз , нашел я библиотеку 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;
Вот так
-
сказал же, sendmail заюзай.
http://userguide.webservis.ru/homeserver-apache-forprint.shtml
здесь как ставить sendmail на винды и где его брать
-
AliMamed (26-07-2001 18:57):
сказал же, sendmail заюзай.
Или MIME::Lite. С помощью него можно отправлять сообщение как через SMTP, так и используя sendmail.
-
Ура все заработало, осталась маленькая проблемма:
письма сгенерированные с использованием русского языка не читаются? Где вообще можно прочитать про управление кодировками?
Заранее спасибо
Сейча прога выглядит так:
#!/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;
-
А возня с кодировками - это уже головная боль клиента.
-
Все-таки хотелось-бы поподробнее
мне наверно нужно в какой-то кодировке передавать мэйл, что-б всегд его могли прочесть
Наверно существую каки-ето команды?
Не хочу головной боли ни для себя ни для клиента
-
Content-Type: text/plain; charset=koi8-r
Не отвечайте на это письмо!
Это тестовое сообщение системы.
чтото я не понял - у тебя скрипт-то сам в какой кодировке?
-
Так я вроде в скрипте нигде и не указывал кодировку самого скрипта, а это
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
";
мЕ НРБЕВЮИРЕ МЮ ЩРН ОХЯЭЛН!
щРН РЕЯРНБНЕ ЯННАЫЕМХЕ ЯХЯРЕЛШ.
я СБЮФЕМХЕЛ, юДЛХМХЯРПЮРНП
Так можно сделать что б читалось?
-
Dmitry (27-07-2001 12:28):
Так я вроде в скрипте нигде и не указывал кодировку самого скрипта,...
А вот поставь.
Например у меня виндовая на сайте стоит, и в outlook\'е видно в виндовой кириллице. Вот.
-
А когда я размещу на Unix сервере свой код c установленной виндовой кодировкой он будет работать?
(пишуто я под виндами но хоститься он будет в другом месте)
Нет какого-нибудь базового кода чтоб и там и здесь правильно работал?
-
Здрасти.... Ты можешь хоть турецкую туда загнать. Серверу все равно! А вот пользователь будет уже решать в каком виде это смотреть. По-этому в Эксплорере есть пункт Вид->Вид кодировки.
:-)
-
Понятно, тогда последний самый глупый вопрос:
как енто сделать?
-
Вот это, например, фрагментик моего скрипта readit.cgi:
print "Content-Type: text/html
";
print <
........
Можно, конечно, и по другому...
-
Content-Type: text/plain; charset=windows-1251
Не отвечайте на это письмо!
Это тестовое сообщение системы.
и все должно быть ок.
-
вот-вот.
-
Ну наконец разобрался, спасибо за помощь
-
Это все хорошо!
А знает кто-нибудь как законектиться и отправиться письмо smtp через анонимный прокси сервер?
А то на мой ip-адрес smtp обиделся и не хочет с ним разговаривать!
-
Puma
и какого ты поднял тему трехгодичной давности?
-
Puma на анонимный прокси он тем более обидится.
Не стоит обижать сервера а тем более поднимать темы трехлетней давности с глупым названием.
IO::Socket тебе в руки.
А вообще, никак ;)