Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скрипт срабатывает, а почты нет.

1.9K
05 января 2003 года
Oleg32
17 / / 20.10.2002
Есть скрипт для отправки почты, без вызова почтовика:
#!/usr/bin/perl
&get_form();
&send_email;
&page;

#####_Получаем данные из формы и обрабатываем_#####

sub get_form()
{
read(STDIN, $buffer, $ENV{ 'CONTENT_LENGTH' } );
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([0-9A-H]{2})/pack('C', hex($1))/eg;
$value =~ s///g;
$value =~ s/<([^>]|\n)*>//g;
$FORM{$name} = $value;
}
}
#####_Отсылаем данные на e-mail_#####

sub send_email
{
$mailprog="/usr/sbin/sendmail -t";
$mailto="logo17\@yandex.ru";
$from="logo17\@yandex.ru";
open (MAIL, "|$mailprog $mailto");
print MAIL "From: $from\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: Otpravka zakaza.\n";
print MAIL"Content-type:text/html\n";
print MAIL"\n";
print MAIL"<html>\n";
print MAIL" <body>\n";
print MAIL"
  • name1: $FORM{'kol01'}\n";
    print MAIL"
  • name2: $FORM{'kol02'}\n";
    print MAIL"
  • name3: $FORM{'kol03'}\n";
    print MAIL"
  • name4: $FORM{'kol04'}\n";
    print MAIL"
  • name5: $FORM{'good01'}\n";
    print MAIL"
  • name6: $FORM{'good02'}\n";
    print MAIL"
  • name7: $FORM{'good03'}\n";
    print MAIL"
  • name8: $FORM{'good04'}\n";

    print MAIL"
  • name9: $FORM{'rez'}\n";
    print MAIL"
  • name10: $FORM{'adres'}\n";
    print MAIL"
  • name11: $FORM{'telephone'}\n";
    print MAIL"
  • name12: $FORM{'e-mail'}\n";
    print MAIL"
  • name13: $FORM{'dopolnenie'}\n";
    print MAIL"
  • name14: $FORM{'sendorder'}\n";

    print MAIL" </body>\n";
    print MAIL"</html>\n";
    close(MAIL);
    }

    #####_Выводим благодарственное сообщение_#####

    sub page
    {
    print "Content-type: text/html\n\n";
    print "<HTML>\n";
    print "Спасибо!!!</html>\n";
    }
    --------------------------------
    Скрипт срабатывает, выводит сообщение "Спасибо!!!", а на E-mail почта не приходит. Вообще никакая.
    Подскажите в чем тут может быть дело.
  • 250
    06 января 2003 года
    Joker
    1.4K / / 20.02.2000
    А там точно деман сенд меила вертится.. ?
    1.9K
    06 января 2003 года
    Oleg32
    17 / / 20.10.2002
    Цитата:
    Originally posted by Joker
    А там точно деман сенд меила вертится.. ?


    В смысле есть лли на сервере программа сендмайл? Есть.

    283
    07 января 2003 года
    Alone
    910 / / 20.11.2002
    Цитата:
    Originally posted by Oleg32

    В смысле есть лли на сервере программа сендмайл? Есть.


    Лучше у админа спроси :) помоему должен именно демон висеть а не просто прога стоять.

    попробуй вмето
    open (MAIL, "|$mailprog $mailto")
    написать open (MAIL, "|$mailprog")
    или print open (MAIL, "|$mailprog");
    тогда сможеш посмотреть(наверное) что сервак возращает

    1.9K
    08 января 2003 года
    Oleg32
    17 / / 20.10.2002
    Мне тут хостер прислал исправленный скрипт, теперь письма приходят, но скрипт забирает сообщение почему то только с поля <TEXTAREA type="text" NAME="sendorder" ROWS=5 COLS=50></TEXTAREA>, с стальных не хочет.:(
    Вот исправленный скрипт (укороченный):
    #!/usr/bin/perl
    &get_form();
    &send_email;
    &page;

    #####_Получаем данные из формы и обрабатываем_#####

    sub get_form()
    {
    read(STDIN, $buffer, $ENV{ 'CONTENT_LENGTH' } );
    @pairs = split(/&/, $buffer);
    foreach $pair (@pairs)
    {
    ($name, $value) = split(/=/, $pair);
    $value =~ tr/+/ /;
    $value =~ s/%([0-9A-H]{2})/pack('C', hex($1))/eg;
    $value =~ s///g;
    $value =~ s/<([^>]|\n)*>//g;
    $FORM{$name} = $value;
    }
    }
    #####_Отсылаем данные на e-mail_#####

    sub send_email
    {
    $mailprog="/usr/sbin/sendmail -t";
    $mailto="logo17\@yandex\.ru";
    $from="logo17\@yandex\.ru";
    open (MAIL, "|$mailprog");
    print MAIL "From: $from\n";
    print MAIL "To: $mailto\n";
    print MAIL "Subject: Otpravka zakaza\n";
    print MAIL"Content-type:text/html\n";
    print MAIL"\n";
    print MAIL"<html>\n";
    print MAIL" <body>\n";
    print MAIL"
  • name12: $FORM{'sendorder'}\n";
    print MAIL"
  • name13: $FORM{'dopolnenie'}\n";
    print MAIL"
  • name14: $FORM{'e-mail'}\n";
    print MAIL" </body>\n";
    print MAIL"</html>\n";
    close(MAIL);
    }

    #####_Выводим благодарственное сообщение_#####

    sub page
    {
    print "Content-type: text/html\n\n";
    print "<HTML>\n";
    print "Спасибо!!!</html>\n";
    }
  • 283
    08 января 2003 года
    Alone
    910 / / 20.11.2002
    А вообще данные отправляются со страници?
    Если отправляеш POST переправь на GET в урле можно будет посмотреть какие поля передаются.
    Может ты пытаешся GET отправить большой текст тогда переправь на POST :).
    А вообще пользуйся CGI люди писали сторались :)

    use CGI;
    $form=new CGI;


    sub get_form
    {
    foreach $key ($form->param())
    {
    $FORM{$key}=$form->param($key);
    }
    }
    1.9K
    09 января 2003 года
    Oleg32
    17 / / 20.10.2002
    Цитата:
    Originally posted by Alone
    А вообще данные отправляются со страници?
    Если отправляеш POST переправь на GET в урле можно будет посмотреть какие поля передаются.
    Может ты пытаешся GET отправить большой текст тогда переправь на POST :).
    А вообще пользуйся CGI люди писали сторались :)

    use CGI;
    $form=new CGI;


    sub get_form
    {
    foreach $key ($form->param())
    {
    $FORM{$key}=$form->param($key);
    }
    }




    1.Отправляются только с одного поля.
    2.Спасибо я попобую c POST на GET.
    3.А это что скрипт такоЙ? И ничего добавлять не надо? Путь к Pepl там, мыло и т.д.?
    Спасибо.

    283
    09 января 2003 года
    Alone
    910 / / 20.11.2002
    Хех далбы url примера давнобы ответ получилбы.
    Я посоветовал использовать GET только чтобы убедится что ВСЕ поля передаются скрипту это видно сразу в адресной строке что то типа
    .../mail.cgi?kol1=бла-бла&col2=тру-тру... и так далее. Может ты гтето в форме ошибся и передается ТОЛЬКО 1 поле
    а на счет скрипта:
    #!/usr/bin/perl

    use CGI;
    $form=new CGI;

    &get_form();
    &send_email;
    &page;
    sub get_form
    {
    foreach $key ($form->param())
    {
    $FORM{$key}=$form->param($key);
    }
    }
    ну а дальше все как у тебя
    300
    09 января 2003 года
    ReDrum
    689 / / 20.04.2000
    Цитата:
    Originally posted by Oleg32


    1.Отправляются только с одного поля.
    2.Спасибо я попобую c POST на GET.
    3.А это что скрипт такоЙ? И ничего добавлять не надо? Путь к Pepl там, мыло и т.д.?
    Спасибо.



    По поводу 2. при разборе параметров аля

    read(STDIN, $buffer, $ENV{ 'CONTENT_LENGTH' } );
    @pairs = split(/&/, $buffer);
    foreach $pair (@pairs)

    хещ $FORM{$name} = $value; будет состоять из пустых имен и значений.

    По поводу 3. perldoc CGI.

    2.9K
    25 января 2003 года
    Миша
    4 / / 25.01.2003
    Я хочу немножко вернуться назад, так как у меня похожая проблема.

    Я установил на своём компе полный комплект сервера: Apache, Perl, Sendmail и другие.

    В качестве теста запустил файл с след. содержанием:

    #!perl
    print "Content-type: text/html\r\n\r\n";

    $sendmail = 'd:/server/sendmail/sendmail.exe';
    $address = 'admin@127.0.0.1';

    if (-f $sendmail)
    {
    open (MAIL, "|$sendmail -t");
    print MAIL "MIME-Version: 1.0\n";
    print MAIL "Content-Type: text/plain; charset=windows-1251\n";
    print MAIL "To: admin <$address>\n";
    print MAIL "From: Проверка почтового сервера <$address>\n";
    print MAIL "Subject: Проверка программы SendMail\n";
    print MAIL "Текст тестового письма";
    close (MAIL);
    print "SendMail программа найдена :)";
    }

    else {print "SendMail программа не найдена :(";}

    на экране высветилось оптимистическое: SendMail программа найдена :). Но я так и не понял, а куды ушло тестовое письмо. Я поменял в файле строку

    print MAIL "To: admin <$address>\n";

    на

    print MAIL "To: myname\@myserver\n";

    Скрипт опять таки хорошо сработал, даже Нортон зафиксировал отправление почты, однако письмо на указанный адрес не пришёл.

    С чем это может быть связано?
    283
    27 января 2003 года
    Alone
    910 / / 20.11.2002
    Хм...
    я не уверен но помоему в настройках гдето указывается нормальный почтовый сервер через каторый и происходит отправка почты
    Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
    Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог