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

Ваш аккаунт

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

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

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

Вопрос на который никто не отвечает.

1.9K
20 октября 2002 года
Oleg32
17 / / 20.10.2002
Для моего сайта нужен cgi-скрипт - сценарий, для отправки сообщений с полей формы без вызова почтовой программы. На всех форумах гробовое молчание. Наверно прийдется из-за одного скрипта изучать весь Perl. Скинте хотябы примерно что нибудь. Спасибо.
328
20 октября 2002 года
Felix
257 / / 20.07.2000
енто не вопрос на который никто не хочет отвечать, енто твоя работа, которую никто не хочет за тебя делать.....
енто реализовываеться не сложно.... на пхп при помощи функции mail а на перле должно быть что то подобное.... поищи в статьях.....
374
21 октября 2002 года
Pennywise
158 / / 20.05.2000
#
# Perl-based Mail Tool
#
# Copyright 1998 Tod Sambar
# All rights reserved.
#
# Arbitrary Mail Form Data can be pre-pended to the mail
# message by adding input parameters that begin with the
# characters: FD
#

#
# Only allow localhost to dump environment variables
# (ONLY remove after reading the syshelp/security.htm documentation)
#
$host_test = $ENV{'REMOTE_ADDR'};
if (!($host_test eq '127.0.0.1'))
{
print "Only localhost is allowed to use this script!\n";
exit(1);
}

#
# PARSE THE CGI FORM
#

# Buffer the POST content
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Process the name=value argument pairs
my $data;
my $pair;
my $name;
my $value;
my @args = split(/&/, $buffer);

$data = '';
foreach $pair (@args)
{
($name, $value) = split(/=/, $pair);

# Unescape the argument value
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

# Any fields starting with FD (form-data) are prepended
if ($name =~ /^FD/)
{
$name =~ s/FD//;
$name =~ tr/+/ /;
$data .= $name." : ".$value."\n";
}
else
{
# Save the name=value pair for use below.
$FORM{$name} = $value;
}
}

#
# VERIFY THE FORM DATA
#
$server = $FORM{'server'};
$from = $FORM{'from'};
$to = $FORM{'recipient'};
if (!($server) || !($from) || !($to))
{
print "<HTML><TITLE>Missing fields</TITLE><BODY>\n";
print "Missing one of the following required arguments:
\n";
print "server from to\n";
print "</BODY></HTML>\n";
exit(1);
}

$subject = $FORM{'subject'};
if (!($subject))
{
$subject = "none";
}

$bodyfile = '';
$body = $FORM{'body'};
if ($data)
{
$body = $data."\n\n".$body;
}

$attach = $FORM{'attach'};

#
# CLOSE SECURITY PROBLEMS.
#
if (($server =~ /[;><&\*'\|]/ ) ||
($from =~ /[;><&\*'\|]/ ) ||
($subject =~ /[;><&\*'\|]/ ) ||
($attach =~ /[;><&\*'\|]/ ) ||
($to =~ /[;><&\*'\|]/ ))
{
print "<HTML><TITLE>Invalid fields</TITLE><BODY>\n";
print "One or more the following fields have invalid characters:
\n";
print "server from to subject attach\n";
print "</BODY></HTML>\n";
exit(1);
}

if ($attach =~ /([^\.]+)\//)
{
print "<HTML><TITLE>Invalid attachment path</TITLE><BODY>\n";
print "An invalid attachment path was specified.
\n";
print "</BODY></HTML>\n";
exit(1);
}

#
# Prepare the BODY of the message
#
if ($body)
{
# Write the body to a temporary file.
do {
$bodyfile = int(rand(99999999))."mit";
} until !(-e $bodyfile);

open(FILE, ">$bodyfile") || exit(1);

print FILE $body;
close FILE;
}

# Fixup any quote characters...
$server =~ s/"/\\"/g;
$from =~ s/"/\\"/g;
$to =~ s/"/\\"/g;
$subject =~ s/"/\\"/g;
$attach =~ s/"/\\"/g;


#
# BUILD THE MAIL COMMAND
#
# Syntax: mailit <server> <from> <to> <subject> [<body-file> [<attach1>]]
#

$commandline = "..\\bin\\mailit.exe ";
$commandline .= " \"$server\"";
$commandline .= " \"$from\"";
$commandline .= " \"$to\"";
$commandline .= " \"$subject\"";
$commandline .= " $bodyfile" if $bodyfile;
$commandline .= " $attach" if $attach;


#
# EXECUTE THE MAILIT COMMAND
#
system($commandline);
$result = $?;

# Remove the body file.
if ($bodyfile)
{
unlink($bodyfile);
}

# Test the result...
if ($result != 0)
{
print "\nMailIt Failed [$result].\n";
print "Command: ".$commandline;
exit(1);
}


#
# DONE
#
print "MailIt Succeeded.\n";

exit(0);
300
21 октября 2002 года
ReDrum
689 / / 20.04.2000
Для моего сайта нужен cgi-скрипт - сценарий, для отправки сообщений с полей формы без вызова почтовой программы.

В чем трабл ;)=,
Разбираешь query_string и записываеьш хочешь в файл, хочешь в бд.
Ну если не нравиться программить самому то найти сырцы вообще не сложно. ;)=

$commandline = "..\\bin\\mailit.exe "; - это еще что???
410
21 октября 2002 года
Tavix
70 / / 20.05.2000
Вот так можно отослать письмо при помощи sendmail:
#!/usr/local/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 -i";
$mailto="твой\@е-mail";
$from="от кого\@email.ru";
open (MAIL, "|$mailprog $mailto");
print MAIL "From: $from\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: тема.\n";
print MAIL"Content-type:text/html\n";
print MAIL"\n";
print MAIL"<html>\n";
print MAIL" <body>\n";
print MAIL"
  • name1: $FORM{'name1'}\n";
    print MAIL"
  • name2: $FORM{'name2'}\n";
    print MAIL"
  • name3: $FORM{'name3'}\n";
    print MAIL"
  • name4: $FORM{'name4'}\n";
    print MAIL"
  • name5: $FORM{'name5'}\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 придет письмо где будут перечислены в столбик значения полей формы!
  • 374
    21 октября 2002 года
    Pennywise
    158 / / 20.05.2000
    Цитата:
    Originally posted by ReDrum
    $commandline = "..\\bin\\mailit.exe "; - это еще что???



    mailit.exe, то же что и sendmail в *nix'e..
    Используться на Web-Server'e Sambar(sambar.com).......дистрибутив включает готовые примеры скриптов...........

    298
    22 октября 2002 года
    zatch
    622 / / 20.01.2000
    Ну это, не так сложно, и не тебе одному это надо, вот пара примеров как это мона зделать:

    <?
    function sendmail($from_name,$from_address,$to_address,$subject,$message,$additional_headers='')
    {
    $MSG = "Return-Path: <$from_address>\n";

    $MSG .= "To: $to_address\n";

    $from = $from_address;
    if (!empty($from_name))
    $from = "$from_name <$from>";
    $MSG .= "From: $from\n";

    $ZONE = Date('Z');
    $SIGN = '+';
    if ($ZONE > 0) $SIGN = '-';
    $ZONE = abs($ZONE);
    $MSG .= 'Date: '.Date('D, d M Y H:i:s ').$SIGN.sprintf('%02d%02d',floor($ZONE/ 3600),floor(($ZONE%3600)/60))."\n";

    if (!empty($subject))
    $MSG .= "Subject: $subject\n";

    $MSG .= "$additional_headers\n";

    $MSG .= "\n";
    $MSG .= $message;

    $fp = popen('/usr/lib/sendmail -t','w');
    $num = fputs($fp,$MSG);
    pclose($fp);

    return $num;
    }
    ?>


    ну или вот проше тоже на пхп


    <?php
    $to = "zatch@mail.com";


    $extra = "From: $email\r\nReply-To: $email\r\n";
    $mess = "This is from: ".$name."(".$REMOTE_ADDR.")\n\n".$message;


    //mail это и есть самая нужная команда в нашем
    //деле!
    mail ($to, $subject, $mess, $extra);

    echo("Your mail has been sent.

    <a href=\"".$HTTP_REFERER."\">go back.</a>\n");

    ?>
    1.9K
    22 октября 2002 года
    Oleg32
    17 / / 20.10.2002
    Вот спасибо, так спасибо. Будем разбираться.
    410
    22 октября 2002 года
    Tavix
    70 / / 20.05.2000
    Цитата:
    Originally posted by Oleg32
    Вот спасибо, так спасибо. Будем разбираться.


    Если ты на Perl'e, могу помочь :)
    [email]tavix@ngs.ru[/email]

    Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
    Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог