Автор Тема: sendmail  (Прочитано 4391 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Ленивый гость

  • Гость
sendmail
« : 01 Октября 2002, 06:16:12 »
Как perl-скрипты посылают письма? Я видел 2 разных примера:

1)
open MAIL, \'|/path/to/your/sendmail -t\';
print MAIL "From: mail@my.host\\n",
"To: webmaster@my.host\\n",
"Subject: Mail from perl script!\\n\\n",
$message;
close MAIL;

2)
open (MAIL, "/usr/sbin/sendmail | webmaster@bonunm.ru");
print MAIL "To: webmaster@bonum.ru\\n";
print MAIL "From: Your_name\\n";
print MAIL "Subject: Test\\n\\n";
print MAIL "howdy, dude!";
close (MAIL);

Чем они отличаются, и почему на моём хостинге (h1.ru) ни один не работает? Какие ошибки я мог допустить?

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
sendmail
« Ответ #1 : 01 Октября 2002, 10:35:54 »
А ты пошли вот как:
open(X,"|/path/to/sendmail -oi -t -odq");

print X <<"EOF";
From: mail@my.host
To: webmaster@my.host
Subject: Mail from perl script!

$message;
EOF
close X;

Ленивый гость

  • Гость
sendmail
« Ответ #2 : 01 Октября 2002, 21:11:03 »
Написал скрипт такого содержания:

#!/usr/local/bin/perl

open (MAIL, \'|/usr/sbin/sendmail -oi -t -odq\');
print MAIL \'<<\', EOF;
print MAIL \'From: survey@mydomain.h1.ru\', "\\n";
print MAIL \'To: myemail@hotmail.com\', "\\n";
print MAIL \'Subject: survey status update\', "\\n\\n";
print MAIL "this\\nis\\nthe\\nmessage\\n";
print MAIL EOF;
close MAIL;

print "Content-type: text/html\\n\\n";
print "your message was sent";

Сообщение не приходит. Что в этом скрипте не правильно? Заранее спасибо за ответ.

Оффлайн alex007

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 835
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.russians-in-london.co.uk/
sendmail
« Ответ #3 : 01 Октября 2002, 22:55:54 »
Попробуй:

HTML письма

#!/usr/bin/perl
$sendmail = "/usr/sbin/sendmail";                      
$tomail = "куда";
$location = "редирект после";
$subject = "Тема письма";

read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});

# Split the name-value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   local($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~
      s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   # strip off any possible SSI comment tags.
   $value =~ s///g;
   $in{$name} = $value;
   }

open (MAIL, "|$sendmail -t");
print MAIL "To: <$in{\'email\'}>\\n";
print MAIL "From: <$tomail>\\n";
print MAIL "Reply-to: <$tomail>\\n";
print MAIL "Subject: $subject\\n";
print MAIL "MIME-Version: 1.0\\n";
print MAIL "Content-Transfer-Encoding: 8bit\\n";
print MAIL "Content-type: text/html;\\n";
print MAIL "X-Priority: 3\\n";
print MAIL "X-MSMail-Priority: Normal\\n\\n";
print MAIL "\\n\\n";
print MAIL "\\n";
print MAIL "Здесь что угодно\\n";
print MAIL "Здесь что угодно\\n";
print MAIL "Здесь что угодно\\n";
print MAIL "\\n";
print MAIL "\\n\\n" ;
close(MAIL);

print "Location: $location\\n\\n";


Простое (текстовое) письмо:

#!/usr/bin/perl
$sendmail = "/usr/sbin/sendmail";                      
$tomail = "куда";
$location = "редирект после";
$subject = "Тема письма";

read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'});

# Split the name-value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
   local($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~
      s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   # strip off any possible SSI comment tags.
   $value =~ s///g;
   $in{$name} = $value;
   }

open (MAIL, "|$sendmail -t");
print MAIL "To: <$in{\'email\'}>\\n";
print MAIL "From: <$tomail>\\n";
print MAIL "Reply-to: <$tomail>\\n";
print MAIL "Subject: $subject\\n";
print MAIL "MIME-Version: 1.0\\n";
print MAIL "Content-Transfer-Encoding: 8bit\\n";
print MAIL "X-Priority: 3\\n";
print MAIL "X-MSMail-Priority: Normal\\n\\n";
print MAIL "\\n\\n";
print MAIL "Здесь что угодно\\n";
print MAIL "Здесь что угодно\\n";
print MAIL "Здесь что угодно\\n";
print MAIL "\\n\\n" ;
close(MAIL);

print "Location: $location\\n\\n";
Русские-в-Лондоне. Как они там? Интересно. Инфо (FAQ), Форум и Магазин

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
sendmail
« Ответ #4 : 01 Октября 2002, 23:20:20 »
Цитировать
Какие ошибки я мог допустить?
Вот первое, что бросилось в глаза:
Цитировать
print MAIL "From: mail@my.host\\n"
- @my интерполируется в эту строку, пиши "\\@my".
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
sendmail
« Ответ #5 : 02 Октября 2002, 10:10:03 »
Ведь я нормально написал?

#!/usr/bin/perl -w
use strict;

open(X,"|/usr/sbin/sendmail -oi -t -odq");

print X <<"EOF";
From: mail@my.host
To: webmaster@my.host
Subject: Mail from perl script!

This is the test mail message!!!
EOF
close X;

print "Content-type: text/html\\n\\n";
print "

All done

\\n";

Ленивый гость

  • Гость
sendmail
« Ответ #6 : 03 Октября 2002, 01:39:38 »
Serchey
Не знал, что на перле можно так делать. Но так или иначе это вызывает ошибку 500.

alex007
HTML письма и простые текстовые письма тоже не посылаются. Может мне запрещено пользоваться sendmail’om? На h1.ru запрещают и ограничивают всё что только можно (на мой взгляд даже больше). Может кто-нибудь знает хороший бесплатный хостинг с поддержкой cgi?

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
sendmail
« Ответ #7 : 03 Октября 2002, 02:03:11 »
Цитировать
Но так или иначе это вызывает ошибку 500.
Что за бред опять, кому нужна твоя "ошибку 500"?! В логах что?
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн lalex

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 47
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
sendmail
« Ответ #8 : 03 Октября 2002, 11:06:43 »
Цитировать
Может мне запрещено пользоваться sendmail’om

Очень может быть.
Хотя я тоже хостюсь на h1.ru, но у меня не было проблем с sendmail\'ом.
Попробуй зашелится к ним и набей что-то вроде:
bash$ /usr/sbin/sendmail -t
from: admin@net.ru
to: webmaster@my.host
subject: test

bla-bla-bla
.
Если не сработает, пиши письмо в супорт и проси дать доступ к sendmail\'у с обоснованием.

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
sendmail
« Ответ #9 : 03 Октября 2002, 11:07:16 »
Да, сорри(мог бы и сам догадатся) -
#!/usr/bin/perl -w
use strict;

open(X,"|/usr/sbin/sendmail -oi -t -odq");

print X <<"EOF";
From: mail\\@my.host
To: webmaster\\@my.host
Subject: Mail from perl script!

This is the test mail message!!!
EOF
close X;

print "Content-type: text/html\\n\\n";
print "

All done

\\n";

Цитировать
Не знал, что на перле можно так делать
- а теперь знаешь?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28