E-Mail Formatierung
gary
- perl
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
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
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
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