gary: E-Mail Formatierung

Guten Abend zusammen,

Es geht um eine Datenaufbereitung, und ich hoffe es gehört in die Perl Rubrik. Also gut. Ich starte per URL-Aufruf einen FormMailer auf meinem Server, der dann wiederum Daten vom Client via CGI liest. Die Daten die ich verschicke stehen untereinander im HTML-Code (input "text" und input"hidden" Befehle).

Der Datenversand klappt wunderbar. Nur sieht dieser in meiner E-mail so aus:

Anrede: Herr

Vorname: Max

Name: Mustermann

Strasse: Musterstrasse

Artikel: Klobürste

Anzahl: 1

PreisGesamt: 9,99 Euro

Artikel: Seife

Anzahl: 3

PreisGesamt: 2,95 Euro

usw...

Also kurz gesagt, er schreibt alle Datenpakete fein säuberlich untereinander. Wenn ich die vernünftig Ausdrucken möchte brauch ich pro Bestellung 2 Blatt DIN A4- Papier,wobei dann nur ein schmaler Streifen auf der linken Seite bedruckt wäre. Das ist nicht optimal.

Können die Daten in HTML bzw JavaScript Vorformatiert werden (bitte kein "Get-Beispiel"),oder ist es eher der FormMailer.pl (was ich vermute), der besser eingerichtet werden muss ?

PS. Mit perlhab ich quasi keine Erfahrung.

Gruss und Gute Nacht

gary

  1. Hallo gary!

    Der Datenversand klappt wunderbar. Nur sieht dieser in meiner E-mail so aus:

    Anrede: Herr

    Vorname: Max

    Name: Mustermann

    Strasse: Musterstrasse

    Artikel: Klobürste

    Anzahl: 1

    PreisGesamt: 9,99 Euro

    Artikel: Seife

    Anzahl: 3

    PreisGesamt: 2,95 Euro

    oder ist es eher der FormMailer.pl (was ich vermute), der besser eingerichtet werden muss ?

    Ja, das wird aber nicht ganz einfach sei und:

    PS. Mit perlhab ich quasi keine Erfahrung.

    dadurch gerade nicht weniger einfach sein ;)

    Der FormMailer listet alle Felder, die er im Formular findet, der Reihenfolge nach. Irgendwo im Skript ist die Formatierung festgelegt, bei meiner Version geschieht es hier:

      
      foreach (@{$Field_Order}) {  
        my $val = (defined $Form{$_} ? $Form{$_} : '');  
        if ($Config{'print_blank_fields'} || $val !~ /^\s*$/) {  
          my $field_name = "$_: ";  
          if ( $wrap_text and length("$field_name$val") > 72 ) {  
             my $subs_indent = '';  
             if ( $wrap_style == 1 ) {  
                $subs_indent = ' ' x length($field_name);  
             }  
             $Text::Wrap::columns = 72;  
             $val = wrap('',$subs_indent,$val);  
          }  
          print MAIL "$field_name$val\n\n";  
        }  
      }  
    
    

    Mit my $field_name = "$_: "; wird zum Beispiel der Doppelpunkt als Trennzeichen nach dem Feldnamen festgelegt, und diese print-Anweisung print MAIL "$field_name$val\n\n"; sorgt für die Leerzeile (2mal Zeilenumbruch \n). Du kannst hier getrost ein \n wegmachen, das reduziert die Ausgabe um die Hälfte (da keine Leerzeile unter den Feldnamen/-werten), dürfte aber etwas unübersichtlich sein.

    Eine tabellarische oder anders geartete Formatierung wird nicht ganz trivial sein und erfordert ein gekonntes Eingreifen im Skript, bzw. ein Neuschreiben einiger Routinen oder des gesamten Skripts. Der FormMailer ist nämlich allgemein gehalten und allgemein einsetzbar deswegen, weil es keine Rolle spielt, wie Du Deine Felder im Formular benennst.

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --

    _ - jenseits vom delirium - _
    [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
    Nichts ist unmöglich? Doch!
    Heute schon gegökt?
    1. Hallo Patrick,

      Vielen Dank für die kompetente Information.
      Wenn es also zu viele Daten sind ist das eine gute Möglichkeit, den Papierverbrau zu drosseln.

      Ich war so frei deine Antwort im Word zu speichern, damit ich im Bedarfsfall darauf zurückgreifen kann.

      Gruss gary

      1. Hallo Patrick,

        Nur kurz, ich hab eine Leerzeile entfernt und es hat geklappt.
        Jetzt hät ich sogar noch für Zusatzartikel plats auf einem A4 Blatt.

        Super

        MfG Gary