piet: kostenloses kontaktformular mit perl-cgi Script

Hallo,

ich suche ein kostenloses "Kontaktformular" mit perl script (kein PHP) für meine Webseite.

Danke

  1. Eines von Tausenden:

    http://www.devedge.de/perl/einfaches-kontaktformular-mit-perl

    Du musst Dir aber im Klaren darüber sein, dass dem Skript viel fehlt.

    Dieses z.B. werden sehr rasch fürchterlich wichtige und seriöse Geschäftsleute entdecken und Du wirst staunen was die Dir alles empfehlen und Du wirst am Tag so 200 mal in Versuchung gebracht allerhand afrikanischen Prinzen und (stellvertretenden) Bankdirektoren zu antworten, welche Dich und nur ausgewählt haben um Dir gegen geringe Beteiligung und Übernahme aller Kosten für Bestechungen und Gebühren ein Millionenvermögen zuzuschanzen.

    Zudem solltest Du bei dem Skript sehr genau darauf achten, dass der Absender nichts außer dem Mailbody bestimmen darf (Empfänger, Absender, Subject) - sonst kann man da einschleusen was man will, z.B. CC-Adressen und BCC-Adressen. Milliarden andere, ebenso sorgfältig ausgewählte, müssen ja auch beglückt werden.

    1. Eines von Tausenden:

      http://www.devedge.de/perl/einfaches-kontaktformular-mit-perl

      Das ist doch nicht Dein Ernst oder?

      Du musst Dir aber im Klaren darüber sein, dass dem Skript viel fehlt.

      Da fehlen schonmal die Header. Aber so wie der Perlcode aussieht, kann die sogar der Absender selbst hinzufügen per HTTP Request. Einschließlich CC und BCC 😉

      MfG

      1. Da fehlen schonmal die Header.

        Nein.

        Aber so wie der Perlcode aussieht, kann die sogar der Absender selbst hinzufügen per HTTP Request. Einschließlich CC und BCC

        So wie gezeigt eben nicht. From, To werden vom Skript als fixe Strings vorgegeben

        $empfaenger = 'info@domain.de';
        $absender   = 'info@domain.de';
        

        und zusammen mit dem Subject im header verbaut:

        print MAIL <<"EOF";
        To: $empfaenger
        From: $absender
        Subject: Kontaktformular
        
        $email_body
        EOF
        
        1. Aber so wie der Perlcode aussieht, kann die sogar der Absender selbst hinzufügen per HTTP Request. Einschließlich CC und BCC

          So wie gezeigt eben nicht. From, To werden vom Skript als fixe Strings vorgegeben

          Oh Sorry, Du hast Recht, hab ich übersehen, entschuldige. Aber als HTML-Mail würde ich das trotzdem nicht durchgehen lassen.

          Wenn HTML dann richtig, d.h., nach dem MIME Standard, als multipart/mixed oder multipart/alternative und selbstverständlich mit einem zweckmäßigen Transfer-Encoding was entsprechend zu deklarieren wäre.

          Und nochwas: CGI::header() erzeugt header für HTTP, nicht für Mail. MfG

          1. Aber als HTML-Mail würde ich das trotzdem nicht durchgehen lassen.

            Ein Mail im HTML-Format war nicht gefordert.

            Und nochwas: CGI::header() erzeugt header für HTTP, nicht für Mail.

            Das was bisher nicht Thema. Zudem sehe ich nicht was das mit Deiner Aussage

            Da fehlen schonmal die Header. Aber so wie der Perlcode aussieht, kann die sogar der Absender selbst hinzufügen per HTTP Request. Einschließlich CC und BCC

            zu tun haben soll. Diese Aussage zeigt eindeutig auf Mail-Header. Und auch hier kann der Absender nichts einfügen, was Dritten schadet oder diese belästigt.

            Das einzige, was mir am Skript aufgefallen ist, ist dass dem Mail-Header noch eine Zeile mit dem Content-Type und der Kodierung (hier UTF-8, muss oft angepasst werden) hinzugefügt werden sollte.

            Hier also Content-Type: text/plain; charset="utf-8", so dass der betreffende Bereich des originalen Skriptes wie folgt aussieht:

            print MAIL <<"EOF";
            To: $empfaenger
            From: $absender
            Subject: Kontaktformular
            Content-Type: text/plain; charset="utf-8"
            
            $email_body
            EOF
            

            Mit der Sicherheit hat das nichts zu tun, der Empfänger kann das Resultat nur besser lesen wenn nicht-ASCII-Zeichen (z.B. Umlaute) drin stehen sollen.

            1. Ja, schön. Content-Type; Charset ist das Eine. Für den Body, egal ob text/plain oder text/html wird i.d.R. ein Content-Transfer-Encoding: quoted-printable empfohlen wenn Charset=UTF-8 ist.

              Die Minimalversion sieht dann so aus:

              # Mail-Template
              my $TT = <<'TOK----------------------------------------------------------------------------EN';
              From: %from%
              To: %to%
              Subject: %subject%
              Date: %date%
              Content-Transfer-Encoding: quoted-printable
              Content-Type: text/plain; Charset=%charset%
              
              %mesg%
              TOK----------------------------------------------------------------------------EN
              

              und falls der Subject-Header nicht mehr ASCII ist, wäre hier auch noch was zu tun. MfG

              PS: Alternative zu quoted-printable wäre base64 aber dann ist die Mail nur noch maschinell lesbar.

              1. Content-Transfer-Encoding: quoted-printable
                

                und falls der Subject-Header nicht mehr ASCII ist, wäre hier auch noch was zu tun.

                Nun, ich brauche das nicht. Mein Thunderbird tut es auch ohne.

                Mail mit Umlauten und Content-Type: text/plain; charset=itf-8 aber ohne Transfer-Encoding in Thunderbird

                Mein Webmailer auch. Ob das andere Clients auch können will ich gerade nicht testen. Immerhin müsste man dann die Nachricht dann auch passend encoden - oder irre ich mich?

                1. hi Jörk,

                  Mein Webmailer auch. Ob das andere Clients auch können will ich gerade nicht testen. Immerhin müsste man dann die Nachricht dann auch passend encoden - oder irre ich mich?

                  Nein, Du irrst Dich nicht 😉 Die Nachricht wäre zu encoden. Quoted Printable wird nicht auf Zeichen sondern auf die Oktetten (Bytes) angewandt, das wäre noch zu beachten. Normalerweise liefert CGI.pm auch die Oktetten es sei denn es wurde so eingestellt, daß Zeichen geliefert werden.

                  Also genau hingucken, wenn Du die entsprechenden Funkionen der zahllos verfügbaren Libraries anwendest.

                  Untenstehender Funktion ist es egal ob bytes oder Zeichen kommen:

                  sub quotePrint{
                      my $s = shift;
                      use bytes;      # Bytesemantics einschalten!
                      $s =~ s/=/=3D/g;
                      my @qp = map{ $_ > 127 ? sprintf("=%X", $_) : pack("C", $_)  } unpack "C*", $s;
                      return join '', @qp;
                  }
                  

                  MfG

  2. Hi,

    das Formular kannst Du selber erstellen. Zeige es hier und dann sehen wir weiter. MfG