Forum Webscript.Ru

Программирование => Perl => Тема начата: novice2 от 10 Июля 2002, 15:29:54

Название: Mail::Mailer
Отправлено: novice2 от 10 Июля 2002, 15:29:54
Братья и сестры! Объясните новичку.
Как можно узнать результат посылки письма?

У меня на хосте нет sendmail. Почту отправляю с помощью Mail::Mailer. Стоит скорее всего qmail, но хочется универсальности в скрипте (Mail::Mailer автоматом выбирает среди sendmail, mail, smtp, qmail...).

Спасибо.
Название: Mail::Mailer
Отправлено: Evgeny от 11 Июля 2002, 19:38:39
А сам напрямую с мэил сервером связываться непробовал? Это самый универсальный способ.
Название: Mail::Mailer
Отправлено: novice2 от 12 Июля 2002, 08:16:14
Evgeny
напрямую - это SMTP?
хочешь сказать, что все равно потом все по SMTP идет?
а какой сервер используется (я же его не указываю)?

попутно вопрос - существуют ли стандарты на ответ о недоставке "non-delivery notice"? хочется обработать ситуацию, когда письмо вроде ушло, а попозже ответ - типа "не могу доставить".
Название: Mail::Mailer
Отправлено: Evgeny от 12 Июля 2002, 15:50:47
Цитировать
напрямую - это SMTP?

Да.

Цитировать
а какой сервер используется (я же его не указываю)?

Это спросить у админов нужно.
Название: Mail::Mailer
Отправлено: Evgeny от 12 Июля 2002, 15:54:29
Вот код небольшой.
Правда только для unix mail сервера подходит.

#!/usr/bin/perl

$mailserver=\'mail.server.com\';  # здесь свой нужно подставить

$From=\'Me\';
$To=\'to_adress@mail.com\';
$Subject=\'Test Message\';
$Message="Test ok!\\nTest ok!\\nTest ok!";

$error=sendEmail($From,$To,$Subject,$Message);
if ($error)
{  print "\\nError: $error\\n";
}


sub sendEmail
{  local ($From,$To,$Subject,$Message)=@_;
   local ($remotehost,$port)=($mailserver,25);
   local ($AF_INET,$SOCK_STREAM,$sockaddr)=(2,1,\'S n a4 x8\');
   local ($thisaddr,$thataddr);
   $thisaddr=gethostbyname("");
   $thataddr=gethostbyname($remotehost);
   unless(socket(S, $AF_INET, $SOCK_STREAM, getprotobyname(\'tcp\')))
   {  return 41;
   }
   unless(bind(S,pack($sockaddr, $AF_INET, 0, $thisaddr)))
   {  return 42;
   }
   unless(connect(S,pack($sockaddr, $AF_INET, $port, $thataddr)))
   {  return 43;
   }
   select(S); $|=1; select(STDOUT);
   print S "helo uicserver\\n";
   print $l=;
   print S "mail from: <>\\n";
   print $l=;
   print S "rcpt to: $To\\n";
   print $l=;
   print S "data\\n";
   print $l=;
   print S "Subject: $Subject\\n";
   print S "From: $From\\n";
   print S "To: $To\\n";
   print S "Content-Type: text\\/plain\\n\\n";
   print S "$Message\\n";
   print S "\\n.\\n";
   print $l=;
   print S "quit\\n";
   print $l=;
   close(S);
   return 0;
}
Название: Mail::Mailer
Отправлено: kopachev от 16 Февраля 2003, 14:02:17
Где взять Mail::Mailer и как с ним работать?
Название: Mail::Mailer
Отправлено: Макс от 16 Февраля 2003, 14:40:19
Цитировать
Где взять Mail::Mailer и как с ним работать?

ppm install mailtools
Название: Mail::Mailer
Отправлено: kopachev от 16 Февраля 2003, 14:49:51
ppm install mailtools

Я не очень соображаю. Поподробнее пожалуйста.:)
Название: Mail::Mailer
Отправлено: Макс от 16 Февраля 2003, 15:06:49
Ты под Win работаеш ?
зайди в каталог с перлом (если он у тебя в PATH не прописан) и в командной строке набери то что я выше написал. Под *nix по идее команда должна выглядеть также
Название: Mail::Mailer
Отправлено: NeoNox от 17 Февраля 2003, 11:08:55
Цитировать
Под *nix по идее команда должна выглядеть также

perl MCPAN -e shell;
Название: Mail::Mailer
Отправлено: mike от 17 Февраля 2003, 13:36:31
Есть еще модуль, который работает с почтовым сервером напрямую: Mail::Sender.
Название: Mail::Mailer
Отправлено: kopachev от 18 Февраля 2003, 20:43:28
А где его взять и как пользоваться (примерчики)
Название: Mail::Mailer
Отправлено: Chs от 18 Февраля 2003, 22:07:37
Цитировать
А где его взять и как пользоваться (примерчики)

Фак читаем, да?
http://search.cpan.org/
Название: Mail::Mailer
Отправлено: kopachev от 22 Февраля 2003, 17:36:08
Примерки посмотрел, как пользоваться понятно. Нужно ли что-то устанавливать. мне нужно на локале потестить.
Название: Mail::Mailer
Отправлено: Chs от 22 Февраля 2003, 22:24:01
Цитировать
Нужно ли что-то устанавливать. мне нужно на локале потестить.

Нужно.
Название: Mail::Mailer
Отправлено: kopachev от 26 Февраля 2003, 23:18:51
Зашел в каталог, где стоит PERL. У меня С:\\Perl\\
Набрал "ppm install mailtools" в командной строке Диско Командира и ничего не произошло, только
Нажал Ctrl-O, а в окне написано:
"ppm" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Chs
Что нужно устанавливать. чтобы на локале потестить скрипт с использование  Mail::Sender или Mail::Mailer.
Название: Mail::Mailer
Отправлено: NeoNox от 27 Февраля 2003, 00:45:33
Ищем ppm.bat, запускаем его, затем install все что хочешь.
Видимо, Perl криво установлен...
Название: Mail::Mailer
Отправлено: Макс от 27 Февраля 2003, 01:46:17
А может нужно в каталог C:\\Perl\\Bin\\ зайти ?
А лучше в PATH его добавь
Название: Mail::Mailer
Отправлено: Chs от 27 Февраля 2003, 09:05:16
Цитировать
Что нужно устанавливать. чтобы на локале потестить скрипт с использование Mail::Sender или Mail::Mailer.

Net::SMTP из libnet для Mail::Sender, Net::SMTP
или sendmail для Mail::Mailer.
Вообще я предпочитаю Mime::Lite, но это вопрос вкуса.:))
Название: Mail::Mailer
Отправлено: NeoNox от 27 Февраля 2003, 11:06:27
Цитировать
но это вопрос вкуса

[OFF]...и задачи[/OFF]
Название: Mail::Mailer
Отправлено: kopachev от 27 Февраля 2003, 14:10:12
у меня на хостинге sendmail нет, нужно "самому" отправлять письма (без sendmail).
Хочу сделать feedback.
Что для этого лучше использовать?
Название: Mail::Mailer
Отправлено: NeoNox от 27 Февраля 2003, 14:32:07
http://www.perldoc.com/perl5.6.1/lib/Net/SMTP.html