Avatar billede mightythor Nybegynder
29. februar 2000 - 13:40 Der er 14 kommentarer og
1 løsning

FORMMAIL

Hej alle...

Hjælp mig, jeg har problemer med at få formmail til at fungere....

Jeg bruger et script fra Matt's script archive:

http://www.worldwidemart.com/scripts/

Min side kan findes på:

http://www.autonorden-it.dk

Problemet er at det hele ser ud til at fungere, men jeg modtager ikke noget mail

Håber at i kan hjælpe....

Hilsen Søren
Avatar billede renny Nybegynder
29. februar 2000 - 13:51 #1
<input type="hidden" name="recipient" value="sk@autonorden.dk">

skal det ikke være
<input type="hidden" name="recipient" value="sk@autonorden-it.dk">
Avatar billede mightythor Nybegynder
29. februar 2000 - 14:34 #2
Renny:  Nej, jeg har email adresse under et andet domæne

Hilsen Søren
Avatar billede Boddicker Seniormester
29. februar 2000 - 17:00 #3
Der er ihvertfald ikke noget i vejen med din formular. Jeg prøvede at bruge dit script til min egen formular (jeg bruger også matt's script) - den duede heller ikke. Måske ligger fejlen i dit script. Hvad med at poste den her på Eksperten?
Avatar billede phylox2 Nybegynder
29. februar 2000 - 19:57 #4
http://www.blaa-bog.dk/formmail.zip

en færdig opsætning af formmail ... den kan ligge på din egen server ... du skal bare ændre i form.html filen
Avatar billede mightythor Nybegynder
01. marts 2000 - 08:31 #5
Auggie: Okay, det er halvstort, men her kommer scriptet....

##############################################################################
# FormMail            Version 1.5                    #
# Copyright 1996 Matt Wright    mattw@worldwidemart.com                #
# Created 6/9/95                Last Modified 2/5/96                #
# Scripts Archive at:        http://www.worldwidemart.com/scripts/        #
##############################################################################
# COPYRIGHT NOTICE                                                          #
# Copyright 1996 Matthew M. Wright  All Rights Reserved.                    #
#                                                                            #
# FormMail may be used and modified free of charge by anyone so long as this #
# copyright notice and the comments above remain intact.  By using this      #
# code you agree to indemnify Matthew M. Wright from any liability that      # 
# might arise from it's use.                                                # 
#                                       
#
# Selling the code for this program without prior written consent is        #
# expressly forbidden.  In other words, please ask first before you try and  #
# make money off of my program.                            #
#                                                                            #
# Obtain permission before redistributing this software over the Internet or #
# in any other medium.    In all cases copyright and header must remain intact #
##############################################################################
# Define Variables
#    Detailed Information Found In README File.

# $mailprog defines the location of the sendmail program on your system.

$mailprog = 'c:\winnt\system32\blat.exe';

# @referers allows forms to be located only on servers which are defined
# in this field.  This fixes a security hole in the last version which
# allowed anyone on any server to use your FormMail script.

@referers = ('www.autonorden-it.dk','autonorden-it.dk','195.24.12.103');
# @referers = ('macros','milamber');

# SERVER_OS defines the server Operating System if other that UNIX

$SERVER_OS="WIN";

# WIN_TEMPFILE is needed to store the mail as it's built.
# this is only required if SERVER_OS is set to "WIN"

$WIN_TEMPFILE="CGI-TMP/formmail.$$";

# Done
#############################################################################

# Check Referring URL
# &check_url;

# Retrieve Date
&get_date;

# Parse Form Contents
&parse_form;

# Check Required Fields
&check_required;

# Return HTML Page or Redirect User
&return_html;

# Send E-Mail
&send_mail;

sub check_url {

  if ($ENV{'HTTP_REFERER'}) {
      foreach $referer (@referers) {
        if ($ENV{'HTTP_REFERER'} =~ /$referer/i) {
            $check_referer = '1';
        last;
        }
      }
  }
  else {
      $check_referer = '1';
  }

  if ($check_referer != 1) {
      &error('bad_referer');
  }

}

sub get_date {

  @days = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
  @months = ('January','February','March','April','May','June','July',
          'August','September','October','November','December');

  ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
  if ($hour < 10) { $hour = "0$hour"; }
  if ($min < 10) { $min = "0$min"; }
  if ($sec < 10) { $sec = "0$sec"; }

  $date = "$days[$wday], $months[$mon] $mday, $year at $hour\:$min\:$sec";

}

sub parse_form {

  if ($ENV{'REQUEST_METHOD'} eq 'GET') {
      # Split the name-value pairs
      @pairs = split(/&/, $ENV{'QUERY_STRING'});
  }
  elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
      # Get the input
      read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

      # Split the name-value pairs
      @pairs = split(/&/, $buffer);
  }
  else {
      &error('request_method');
  }

  foreach $pair (@pairs) {
      ($name, $value) = split(/=/, $pair);

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

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

      # If they try to include server side includes, erase them, so they
      # arent a security risk if the html gets returned.  Another
      # security hole plugged up.

      $value =~ s/<!--(.|\n)*-->//g;

      # Create two associative arrays here.  One is a configuration array
      # which includes all fields that this form recognizes.  The other
      # is for fields which the form does not recognize and will report
      # back to the user in the html return page and the e-mail message.
      # Also determine required fields.

      if ($name eq 'recipient' ||
      $name eq 'subject' ||
      $name eq 'email' ||
      $name eq 'realname' ||
      $name eq 'redirect' ||
      $name eq 'bgcolor' ||
      $name eq 'background' ||
      $name eq 'link_color' ||
      $name eq 'vlink_color' ||
          $name eq 'text_color' ||
        $name eq 'alink_color' ||
      $name eq 'title' ||
      $name eq 'sort' ||
      $name eq 'print_config' ||
      $name eq 'return_link_title' ||
      $name eq 'return_link_url' && ($value)) {
       
    $CONFIG{$name} = $value;
      }
      elsif ($name eq 'required') {
        @required = split(/,/,$value);
      }
      elsif ($name eq 'env_report') {
        @env_report = split(/,/,$value);
      }
      else {
        if ($FORM{$name} && ($value)) {
        $FORM{$name} = "$FORM{$name}, $value";
    }
        elsif ($value) {
            $FORM{$name} = $value;
        }
      }
  }
}

sub check_required {

  foreach $require (@required) {
      if ($require eq 'recipient' ||
          $require eq 'subject' ||
          $require eq 'email' ||
          $require eq 'realname' ||
          $require eq 'redirect' ||
          $require eq 'bgcolor' ||
          $require eq 'background' ||
          $require eq 'link_color' ||
          $require eq 'vlink_color' ||
          $require eq 'alink_color' ||
          $require eq 'text_color' ||
      $require eq 'sort' ||
          $require eq 'title' ||
          $require eq 'print_config' ||
          $require eq 'return_link_title' ||
          $require eq 'return_link_url') {

        if (!($CONFIG{$require}) || $CONFIG{$require} eq ' ') {
            push(@ERROR,$require);
        }
      }
      elsif (!($FORM{$require}) || $FORM{$require} eq ' ') {
        push(@ERROR,$require);
      }
  }

  if (@ERROR) {
      &error('missing_fields', @ERROR);
  }

}

sub return_html {

  if ($CONFIG{'redirect'} =~ /http\:\/\/.*\..*/) {

      # If the redirect option of the form contains a valid url,
      # print the redirectional location header.

      print "Location: $CONFIG{'redirect'}\n\n";
  }
  else {

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

      # Print out title of page
      if ($CONFIG{'title'}) {
    print "  <title>$CONFIG{'title'}</title>\n";
      }
      else {
        print "  <title>Thank You</title>\n";
      }

      print " </head>\n <body";

      # Get Body Tag Attributes
      &body_attributes;

      # Close Body Tag
      print ">\n  <center>\n";

      if ($CONFIG{'title'}) {
        print "  <h1>$CONFIG{'title'}</h1>\n";
      }
      else {
        print "  <h1>Thank You For Filling Out This Form</h1>\n";
      }
      print "</center>\n";

      print "Below is what you submitted to $CONFIG{'recipient'} on ";
      print "$date<p><hr size=7 width=75\%><p>\n";

      if ($CONFIG{'sort'} eq 'alphabetic') {
        foreach $key (sort keys %FORM) {
            # Print the name and value pairs in FORM array to html.
            print "<b>$key:</b> $FORM{$key}<p>\n";
        }
      }
      elsif ($CONFIG{'sort'} =~ /^order:.*,.*/) {
        $sort_order = $CONFIG{'sort'};
        $sort_order =~ s/order://;
        @sorted_fields = split(/,/, $sort_order);
        foreach $sorted_field (@sorted_fields) {
            # Print the name and value pairs in FORM array to html.
            if ($FORM{$sorted_field}) {
              print "<b>$sorted_field:</b> $FORM{$sorted_field}<p>\n";
        }
        }
      }
      else {
        foreach $key (keys %FORM) {
            # Print the name and value pairs in FORM array to html.
            print "<b>$key:</b> $FORM{$key}<p>\n";
        }
      }

      print "<p><hr size=7 width=75%><p>\n";

      # Check for a Return Link
      if ($CONFIG{'return_link_url'} =~ /http\:\/\/.*\..*/ && $CONFIG{'return_link_title'}) {
        print "<ul>\n";
        print "<li><a href=\"$CONFIG{'return_link_url'}\">$CONFIG{'return_link_title'}</a>\n";
        print "</ul>\n";
      }
      print "<a href=\"http://www.worldwidemart.com/scripts/formmail.shtml\">FormMail</a> Created by
Matt Wright and can be found at <a href=\"http://www.worldwidemart.com/scripts/\">Matt's Script
Archive</a>.\n";
      print "</body>\n</html>";
  }
}


sub send_mail {
  # Open The Mail Program
  if ($SERVER_OS eq "WIN") {
    open(MAIL,">$WIN_TEMPFILE");
    local($BLAT_ARGS);
  } else {
    open(MAIL,"|$mailprog -t");
  }

  # Windows (blat) needs these on the command line, so we'll skip them here
  if ($SERVER_OS ne "WIN") {
    print MAIL "To: $CONFIG{'recipient'}\n";
    print MAIL "From: $CONFIG{'email'} ($CONFIG{'realname'})\n";
  }

  # Check for Message Subject
  if ($CONFIG{'subject'}) {
      print MAIL "Subject: $CONFIG{'subject'}\n\n";
  }
  else {
      print MAIL "Subject: WWW Form Submission\n\n";
  }

  print MAIL "Below is the result of your feedback form.  It was ";
  print MAIL "submitted by $CONFIG{'realname'} ($CONFIG{'email'}) on ";
  print MAIL "$date\n";
  print MAIL "---------------------------------------------------------------------------\n\n";

  if ($CONFIG{'print_config'}) {
      @print_config = split(/,/,$CONFIG{'print_config'});
      foreach $print_config (@print_config) {
        if ($CONFIG{$print_config}) {
            print MAIL "$print_config: $CONFIG{$print_config}\n\n";
        }
      }
  }

  if ($CONFIG{'sort'} eq 'alphabetic') {
      foreach $key (sort keys %FORM) {
        # Print the name and value pairs in FORM array to mail.
        print MAIL "$key: $FORM{$key}\n\n";
      }
  }
  elsif ($CONFIG{'sort'} =~ /^order:.*,.*/) {
      $CONFIG{'sort'} =~ s/order://;
      @sorted_fields = split(/,/, $CONFIG{'sort'});
      foreach $sorted_field (@sorted_fields) {
        # Print the name and value pairs in FORM array to mail.
        if ($FORM{$sorted_field}) {
            print MAIL "$sorted_field: $FORM{$sorted_field}\n\n";
        }
      }
  }
  else {
      foreach $key (keys %FORM) {
        # Print the name and value pairs in FORM array to html.
            print MAIL "$key: $FORM{$key}\n\n";
      }
  }

  print MAIL "---------------------------------------------------------------------------\n";

  # Send Any Environment Variables To Recipient.
  foreach $env_report (@env_report) {
      print MAIL "$env_report: $ENV{$env_report}\n";
  }

  close (MAIL);

  # If we're running under Windows, we actually send mail here...
  if ($SERVER_OS eq "WIN") {
    $WIN_TEMPFILE =~ s/\//\\/g;
    $mailprog =~ s/\//\\/g;
    $BLAT_ARGS = "$WIN_TEMPFILE -t $CONFIG{'recipient'} -penguin ";
    $BLAT_ARGS .= "-f $CONFIG{'email'} " if defined($CONFIG{'email'});
    $BLAT_ARGS .= "-q";
    system "$mailprog $BLAT_ARGS";
    unlink $WIN_TEMPFILE;
  }
}

sub error {

  ($error,@error_fields) = @_;

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

  if ($error eq 'bad_referer') {
      print "<html>\n <head>\n  <title>Bad Referrer - Access Denied</title>\n </head>\n";
      print " <body>\n  <center>\n  <h1>Bad Referrer - Access Denied</h1>\n  </center>\n";
      print "The form that is trying to use this <a
href=\"http://www.worldwidemart.com/scripts/\">FormMail Program</a>\n";
      print "resides at: $ENV{'HTTP_REFERER'}, which is not allowed to access this cgi script.<p>\n";
      print "Sorry!\n";
      print "</body></html>\n";
  }

  elsif ($error eq 'request_method') {
      print "<html>\n <head>\n  <title>Error: Request Method</title>\n </head>\n";
      print "</head>\n <body";

      # Get Body Tag Attributes
      &body_attributes;

      # Close Body Tag
      print ">\n <center>\n\n";

      print "  <h1>Error: Request Method</h1>\n  </center>\n\n";
      print "The Request Method of the Form you submitted did not match\n";
      print "either GET or POST.  Please check the form, and make sure the\n";
      print "method= statement is in upper case and matches GET or POST.\n";
      print "<p><hr size=7 width=75%><p>\n";
      print "<ul>\n";
      print "<li><a href=\"$ENV{'HTTP_REFERER'}\">Back to the Submission Form</a>\n";
      print "</ul>\n";
      print "</body></html>\n";
  }

  elsif ($error eq 'missing_fields') {

      print "<html>\n <head>\n  <title>Error: Blank Fields</title>\n </head>\n";
      print " </head>\n <body";
     
      # Get Body Tag Attributes
      &body_attributes;
       
      # Close Body Tag
      print ">\n  <center>\n";

      print "  <h1>Error: Blank Fields</h1>\n\n";
      print "The following fields were left blank in your submission form:<p>\n";

      # Print Out Missing Fields in a List.
      print "<ul>\n";
      foreach $missing_field (@error_fields) {
        print "<li>$missing_field\n";
      }
      print "</ul>\n";

      # Provide Explanation for Error and Offer Link Back to Form.
      print "<p><hr size=7 width=75\%><p>\n";
      print "These fields must be filled out before you can successfully submit\n";
      print "the form.  Please return to the <a href=\"$ENV{'HTTP_REFERER'}\">Fill Out Form</a> and
try again.\n";
      print "</body></html>\n";
  }
  exit;
}

sub body_attributes {
  # Check for Background Color
  if ($CONFIG{'bgcolor'}) {
      print " bgcolor=\"$CONFIG{'bgcolor'}\"";
  }

  # Check for Background Image
  if ($CONFIG{'background'} =~ /http\:\/\/.*\..*/) {
      print " background=\"$CONFIG{'background'}\"";
  }

  # Check for Link Color
  if ($CONFIG{'link_color'}) {
      print " link=\"$CONFIG{'link_color'}\"";
  }

  # Check for Visited Link Color
  if ($CONFIG{'vlink_color'}) { 
      print " vlink=\"$CONFIG{'vlink_color'}\"";
  }

  # Check for Active Link Color
  if ($CONFIG{'alink_color'}) {
      print " alink=\"$CONFIG{'alink_color'}\"";
  }

  # Check for Body Text Color
  if ($CONFIG{'text_color'}) {
      print " text=\"$CONFIG{'text_color'}\"";
  }
}

Hilsen Søren
Avatar billede mightythor Nybegynder
01. marts 2000 - 08:35 #6
Phylox2: Jeg kan ikke bruge det script desværre, min server er WINNT ikke UNIX

Hilsen Søren
Avatar billede htx98i17 Professor
01. marts 2000 - 13:37 #7
Jeg modtager heller ikke nogen mail. Der må være en fejl i scriptet.
Avatar billede mightythor Nybegynder
01. marts 2000 - 13:41 #8
htx98i17: Det var næsten hvad jeg selv havde gættet..... Men jeg kan ikke rigtigt finde fejlen, derfor har jeg brug for hjælp fra dem der er nogen hajer til det der PERL ......

:-/

Hilsen Søren
Avatar billede htx98i17 Professor
01. marts 2000 - 13:42 #9
jeps - og det er ikke mig :o)
Avatar billede mightythor Nybegynder
01. marts 2000 - 13:57 #10
htx98i17: Nope, heller ikke mig :) derfor jeg søger hjælp her

Hilsen Søren
Avatar billede hatecaps Nybegynder
02. marts 2000 - 16:46 #11
øhhh, jeg går ud fra at den første linje i skriptet viser perls placering på serveren ... og at du bare har glemt den da du kopierede skidtet herind. Hvis ikke, så "kunne" det godt ha' noget med det at gøre
Avatar billede mightythor Nybegynder
03. marts 2000 - 08:14 #12
hatecaps: Nej, mit hotel ligger på en NT server, der skal man ikke henvise til hvor Perl ligger, det fungerer bare der er .pl på et script....

Hilsen Søren
Avatar billede erikjacobsen Ekspert
13. marts 2000 - 22:06 #13
Et dumt, dumt, dumt spørgsmål: er programmet BLAT (et mailprogram)
installeret på bemeldte server?
Avatar billede mightythor Nybegynder
14. marts 2000 - 08:53 #14
Erikjacobsen: Jep, Blat er et mailprogram (jeg har lavet et nyt formmail script i ASP siden, men jeg kunne gerne tænke mig at få dette til at fungere også, da det kan en del flere ting end mit ASP script)

Hilsen Søren
Avatar billede mightythor Nybegynder
18. april 2000 - 14:19 #15
Jeg har opgivet at få hjælp til dette spørgsmål, så jeg suger pointene igen....

Tak til dem der har kommenteret spørgsmålet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester