Formular mit CGI (formmail) ---» E-Mailbody mit unerwuenschten Leerzeilen
Peter Moellmann
- cgi
Hallo!
Ich habe ein Problem mit einem CGI Script (formmail.pl von Matt Wright (http://www.worldwidemart.com/scripts/).
Da ich CGI Anfaenger bin, kenne ich nahezu nix davon. Nur durch
Anleitung von der obengenannten Seite und selfhtml bin ich ueberhaupt so weit gekommen.
Ich habe ein Formular mit Fussballtipps zur Championsleague erstellt,
wo meine Freunde tippen sollen. Die E-Mail, die ich dann bekomme,
werte ich mit Excel aus. Jetzt bekomme ich aber die E-Mail und
alle gesendeten Werte haben eine Leerzeile dazwischen. Da ich nicht
alle Formulare per Hand, oder Makro formatiern will, moechte ich,
dass die E-Mail ohne Leerzeilen zwischen den Werten gesendet wird.
Ich habe schon Wagenruecklauf, etc. ausprobiert, aber es klappt nicht.
Kann mir einer von Euch helfen? Irgendwie meine ich, es waere alles
korrekt, aber ich bekomme nicht das gewuenschte Ergebniss!
--- schnipp Teil des CGI-Scripts formmail.pl ---
sub send_mail {
# Localize variables used in this subroutine. #
local($print_config,$key,$sort_order,$sorted_field,$env_report);
# Open The Mail Program
open(MAIL,"$mailprog -t");
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 submitted by\n";
print MAIL "$Config{'realname'} ($Config{'email'}) on $date +0900\n ";
print MAIL "-" x 75 . "\n\n";
if (@Print_Config) {
foreach $print_config (@Print_Config) {
if ($Config{$print_config}) {
print MAIL "$print_config: $Config{$print_config}";
}
}
}
--- schnapp ---
Hallo Peter!
if (@Print_Config) {
foreach $print_config (@Print_Config) {
if ($Config{$print_config}) {
print MAIL "$print_config: $Config{$print_config}";
}
}
»» }
Dazu müsste man wissen, wie der Hash $Config an der Stelle{$print_config} aussieht. Das müsste ziemlich weit oben der Fall sein. Irgendwo müsste da stehen sowas wie
// $Config{$print_config}= "....";
Wenn da am Ende ein "\n" steht, dann lösch es einfach raus :)
Wenn nicht was ich befürchte, stell mal noch nen Ausschnitt rein, oder noch besser: schreib dir einfach selbst ein PERL-Script. Ist jedenfalls leichter, als sich als Anfänger mit einem Script von einem Profi herumzuschlagen trotz PERL, was ja anscheinend eine so intuitive Sprache sein soll, dass das sogar meine Oma noch lernen könnte ;-)
Nein ehrlich! Probiers einfach mal selbst. Das sind ca 20 Zeilen, und du kannst dann selbst bestimmen, wieviele Leerzeilen vorkommen sollen ;-)
Grüsse
Bernhard
Hi nochmal!
Ich hab des Rätsels Lösung. Ich hab mir auf der URL die du angegeben hast, mal das ganze Script angeschaut, und habe bemerkt, dass du ausgerechnet die 4 wichtigsten Zeichen beim posten des Script-Ausschnittes vergessen hast:
Denn es heisst lt. deiner URL (< http://www.worldwidemart.com/scripts/cgi-bin/download.cgi?s=formmail&c=txt&f=FormMail.pl>):
// if (@Print_Config) {
// foreach $print_config (@Print_Config) {
// if ($Config{$print_config}) {
// print MAIL "$print_config: $Config{$print_config}\n\n";
------^^^^
// }
// }
// }
Was äusserst wichtig ist, wo du ja sicher weisst, dass jedes "\n" eine Zeilenschaltung im plain-text bedeutet ;-)
Ersparst dir also eine Menge grauer Haare wenn du eins der beiden "\n" rauswirfst, anstatt oben zu suchen. Es gilt aber immer noch: "Self" ist der Mann ;-)
Grüsse
Bernhard
Hallo Bernhard!
Hi nochmal!
Ich hab des Rätsels Lösung. Ich hab mir auf der URL die du angegeben hast, mal das ganze Script angeschaut, und habe bemerkt, dass du ausgerechnet die 4 wichtigsten Zeichen beim posten des Script-Ausschnittes vergessen hast:
Denn es heisst lt. deiner URL (< http://www.worldwidemart.com/scripts/cgi-bin/download.cgi?s=formmail&c=txt&f=FormMail.pl>):
// if (@Print_Config) {
// foreach $print_config (@Print_Config) {
// if ($Config{$print_config}) {
// print MAIL "$print_config: $Config{$print_config}\n\n";
------^^^^
// }
// }
// }Was äusserst wichtig ist, wo du ja sicher weisst, dass jedes "\n" eine Zeilenschaltung im plain-text bedeutet ;-)
Ja, ich habe es nach und nach herausgefunden. Ausserdem hatte ich da so eine Vorahnung! ;-))
Ich habe mich da wohl wirklich an der falschen Stelle aufgehangen! Naja, kann passieren.
Wenn Du jetzt mal auf meine Seite guckst, dann wirst Du feststellen, dass ich jetzt aber schon zu einem anderen
Script gewechselt habe. Wir haben uns ueber das Sonderzeichenproblem ja per E-Mail unterhalten.
Achja, der ist das! ;-)
Tja, ich hatte noch keine Zeit mir das mit den von Dir vorgeschlagenen Sonderzeichen, oder der anderen Loesung zu Gemuete zu fuehren,
da ich zur Schule musste, um mir auf anderem Gebiet noch mehr INPUT zu verschaffen.
Abermals herzlichen Dank fuer Deine Hilfe. Super, echt!
Ich lasse es Dich wissen, wenn meine Seite fertig(?) ist, dann kannste ja mal vorbei schauen!
Danke, Peter ...
Ersparst dir also eine Menge grauer Haare wenn du eins der beiden "\n" rauswirfst, anstatt oben zu suchen. Es gilt aber immer noch: "Self" ist der Mann ;-)