Hallo zusammen,
ich bin nun schon 1,5 Tage auf der Suche nach einer Formmail.cgi für Python, habe aber nur welche für Perl entdeckt.
Kann mir jemand einen Link zum Downloaden verraten???
Bitte, Bitte!!!
Formmail für Python
-
- User
- Beiträge: 29
- Registriert: Montag 9. September 2002, 17:00
- Wohnort: Berlin
- Kontaktdaten:
Hatte ich schonmal in zwei Artikeln erläutert:
http://python.delta-c.de/artikel/j1_pyt ... iler.shtml
http://python.delta-c.de/artikel/j2_pyt ... ler2.shtml
Gruß,
Kai
http://python.delta-c.de/artikel/j1_pyt ... iler.shtml
http://python.delta-c.de/artikel/j2_pyt ... ler2.shtml
Gruß,
Kai
Hallo,
habe das Skript ausprobiert, bekomme jedoch die Fehlermeldung Error 500.
Im Netz habe ich diesen Kommentar dazu gefunden:
"Ein Error 500 (interner Serverfehler) tritt auf falls folgendes nicht gegeben ist:
Fall 1: die 1.te Zeile endet nicht mit einem einfachen Linefeed (LF = \n)
Fall 2: die 1.te Zeile endet mit einem Carriage Return+Linefeed (CRLF = \r\n)",
weiß aber nicht was ich verändern soll, da ich an der ersten Zeile keine Veränderungen vorgenommen habe und diese auch mit funktionierenden Programmen übereinstimmt.
Kann mir da jemand weiterhelfen?
habe das Skript ausprobiert, bekomme jedoch die Fehlermeldung Error 500.
Im Netz habe ich diesen Kommentar dazu gefunden:
"Ein Error 500 (interner Serverfehler) tritt auf falls folgendes nicht gegeben ist:
Fall 1: die 1.te Zeile endet nicht mit einem einfachen Linefeed (LF = \n)
Fall 2: die 1.te Zeile endet mit einem Carriage Return+Linefeed (CRLF = \r\n)",
weiß aber nicht was ich verändern soll, da ich an der ersten Zeile keine Veränderungen vorgenommen habe und diese auch mit funktionierenden Programmen übereinstimmt.
Kann mir da jemand weiterhelfen?
-
- User
- Beiträge: 29
- Registriert: Montag 9. September 2002, 17:00
- Wohnort: Berlin
- Kontaktdaten:
Hast Du das Script im Text-Modus des FTP-Programms hochgeladen? Poste mal das ganze Script, das Du ausführen möchtest.MarlKarx hat geschrieben: "Ein Error 500 (interner Serverfehler) tritt auf falls folgendes nicht gegeben ist:
Fall 1: die 1.te Zeile endet nicht mit einem einfachen Linefeed (LF = \n)
Fall 2: die 1.te Zeile endet mit einem Carriage Return+Linefeed (CRLF = \r\n)",
Kann mir da jemand weiterhelfen?
Gruß,
Kai
Code: Alles auswählen
#!/usr/bin/python
print "Content-type: text/plain\n\n"
print "hallo"
-
- User
- Beiträge: 29
- Registriert: Montag 9. September 2002, 17:00
- Wohnort: Berlin
- Kontaktdaten:
Argh, mein privates Content-Management-System hat das erste \ eliminiert.... Grrr! Danke für den hinweis,Milan hat geschrieben:wichtig ist das \n bei Content-type: text/plain\n\n, das regelt den Fehler, den du bekommen hast. Der Client/server wusste dadurch nicht, wie diese HTTP - Antwort formatiert istCode: Alles auswählen
#!/usr/bin/python print "Content-type: text/plain\n\n" print "hallo"
Kai
Hallöchen
ick habe jetzt irgendwie gar keinen Plan mehr, nachdem ich gestern nochmal gesurft bin.
ganz grundlegend mal eine Frage:
Die Zeile: "print "Content-type: text/plain\n\n" " bedeutet doch, daß man HTML-Code in die CGI einbauen und ausgeben kann. Dies bedeutet doch wiederum, daß ich das Kontaktformular direkt in Kai´s Formmailer einbauen sollte (so hab ich es auch gestern probiert).
Auf der anderen Seite, so mein anfänglicher Grundgedanke, habe ich doch aber ein HTML-Kontaktformular und verschicke nur die Daten mit dem Formmailer, oder ???
Irgendwie habe ich jetzt den Überblick verloren und es wäre schön von euch eine Antwort zu bekommen.
Mein Skript stelle ich rein, sobald ich wieder Zugang zu meinem Account habe.
ick habe jetzt irgendwie gar keinen Plan mehr, nachdem ich gestern nochmal gesurft bin.
ganz grundlegend mal eine Frage:
Die Zeile: "print "Content-type: text/plain\n\n" " bedeutet doch, daß man HTML-Code in die CGI einbauen und ausgeben kann. Dies bedeutet doch wiederum, daß ich das Kontaktformular direkt in Kai´s Formmailer einbauen sollte (so hab ich es auch gestern probiert).
Auf der anderen Seite, so mein anfänglicher Grundgedanke, habe ich doch aber ein HTML-Kontaktformular und verschicke nur die Daten mit dem Formmailer, oder ???
Irgendwie habe ich jetzt den Überblick verloren und es wäre schön von euch eine Antwort zu bekommen.
Mein Skript stelle ich rein, sobald ich wieder Zugang zu meinem Account habe.
-
- User
- Beiträge: 69
- Registriert: Donnerstag 29. August 2002, 17:10
- Wohnort: Erfurt
- Kontaktdaten:
Erstmal muss es Content-type: text/html\n\n für HTML Ausgaben heißen damit der Browser was macht
Da du im form ja etwas abschickst, kannst du halt überprüfen ob was im Dict drin ist, wenn nicht dann gibst du das Formular aus. Oder du machst ein hidden input den du z.b. action nennst. Fragst dann ab was es ist und sendest, zeigst das Formular an etc.
Da du im form ja etwas abschickst, kannst du halt überprüfen ob was im Dict drin ist, wenn nicht dann gibst du das Formular aus. Oder du machst ein hidden input den du z.b. action nennst. Fragst dann ab was es ist und sendest, zeigst das Formular an etc.
Also ich habe meine Gedanken jetzt ein wenig geordnet und mein Webabfrageformular:
<html>
<head>
<title>Web-Formular</title>
</head>
<body>
<h1>Feedback-Formular</h1>
<form name="form_test" method="POST"
action="http://ping/db/jandb/FormMail2.cgi">
Vorname: <input type="text" name="Vorname" size="10" maxlength="20"><br>
Nachname: <input type="text" name="Nachname" size="20" maxlength="20"><br>
E-Mail-Adresse: <input type="text" name="Email"size="30"
maxlength="40"><br><maxlength="4"><br>
Was wollen Sie mir mitteilen?<br> <right> <textarea name="Sonstiges" rows="10" cols="70" wrap="virtual"></textarea><br>
<input type="submit" value="Formular verschicken">
</form>
</body>
</html>
erstellt, dieses schickt die Angaben zum Formmailer, dem ich einfach nur die übergebenen Daten und Adressen zugewiesen habe:
#!/usr/bin/python
import cgi
import smtplib
empfaenger = "psfkafka@gmx.de"
absender = "http://ping/db/jandb/form/formular.html"
betreff = "Anfrage ueber Kontaktformular"
puffer = cgi.FieldStorage ('Vorname','Nachname','Email','Sonstiges')
msg = "To: %s\n" %empfaenger
msg = msg + "From: %s\n" %absender
msg = msg + "Subject: %s\n\n" %betreff
msg = msg + str (puffer)
server = smtplib.SMTP ('xxxxxxx.de')
server.sendmail (absender, empfaenger, msg)
server.close ()
print "Location: http://ping/db/jandb/form/danke.html \n\n"
Dabei bekomme ich folgende Fehlermeldung:
Server error!
Error message:
Premature end of script headers: FormMail.cgi
ich hoffe ich bin damit auf der richtigen Spur und es wäre schön, wenn Ihr mir weiterhelfen könntet.
<html>
<head>
<title>Web-Formular</title>
</head>
<body>
<h1>Feedback-Formular</h1>
<form name="form_test" method="POST"
action="http://ping/db/jandb/FormMail2.cgi">
Vorname: <input type="text" name="Vorname" size="10" maxlength="20"><br>
Nachname: <input type="text" name="Nachname" size="20" maxlength="20"><br>
E-Mail-Adresse: <input type="text" name="Email"size="30"
maxlength="40"><br><maxlength="4"><br>
Was wollen Sie mir mitteilen?<br> <right> <textarea name="Sonstiges" rows="10" cols="70" wrap="virtual"></textarea><br>
<input type="submit" value="Formular verschicken">
</form>
</body>
</html>
erstellt, dieses schickt die Angaben zum Formmailer, dem ich einfach nur die übergebenen Daten und Adressen zugewiesen habe:
#!/usr/bin/python
import cgi
import smtplib
empfaenger = "psfkafka@gmx.de"
absender = "http://ping/db/jandb/form/formular.html"
betreff = "Anfrage ueber Kontaktformular"
puffer = cgi.FieldStorage ('Vorname','Nachname','Email','Sonstiges')
msg = "To: %s\n" %empfaenger
msg = msg + "From: %s\n" %absender
msg = msg + "Subject: %s\n\n" %betreff
msg = msg + str (puffer)
server = smtplib.SMTP ('xxxxxxx.de')
server.sendmail (absender, empfaenger, msg)
server.close ()
print "Location: http://ping/db/jandb/form/danke.html \n\n"
Dabei bekomme ich folgende Fehlermeldung:
Server error!
Error message:
Premature end of script headers: FormMail.cgi
ich hoffe ich bin damit auf der richtigen Spur und es wäre schön, wenn Ihr mir weiterhelfen könntet.
Wenn ich das jetzt richtig verstanden habe, benötige ich das "Content-type: text/html\n\n" und "Content-type: text/plain\n\n" zur Aktivierung des Browsers, damit ich eingebundene, bei html=>tags, bei plain=>print-Anweisungen ausgeben lassen kann. annähernd richtig?
Zuletzt geändert von MarlKarx am Dienstag 18. Februar 2003, 18:12, insgesamt 1-mal geändert.
nö, falsch verstanden...
Ein Browser ruft eine Internetadresse auf und erwartet natürlich von dieser eine Antwort. (Würdest du ja auch wollen, oder?) Der Server auf dem die angeforderte Seite liegt, sieht, dass für die Antwort etwas verarbeitet werden muss, Beispielsweise ein Formular (was der Browser mit übergeben hat). also ruft der Server ein Programm, dein CGI-Script. Das Script soll eine Antwort formulieren, die zurückgesendet werden soll. Damit der Browser weiß, wie er die Antwort behandeln muss, muss dastehen, ob es eine textdaeit (plain), ein html-script(HTML) oder irgendetwas anders ist. Dein Script macht also nix anderes, als die HTML Seite auszugeben (mit print), die sonst statisch auf dem server als Datei liegen würde. Das Contenttype formatiert die Antwort.
Alles klar?
Ein Browser ruft eine Internetadresse auf und erwartet natürlich von dieser eine Antwort. (Würdest du ja auch wollen, oder?) Der Server auf dem die angeforderte Seite liegt, sieht, dass für die Antwort etwas verarbeitet werden muss, Beispielsweise ein Formular (was der Browser mit übergeben hat). also ruft der Server ein Programm, dein CGI-Script. Das Script soll eine Antwort formulieren, die zurückgesendet werden soll. Damit der Browser weiß, wie er die Antwort behandeln muss, muss dastehen, ob es eine textdaeit (plain), ein html-script(HTML) oder irgendetwas anders ist. Dein Script macht also nix anderes, als die HTML Seite auszugeben (mit print), die sonst statisch auf dem server als Datei liegen würde. Das Contenttype formatiert die Antwort.
Alles klar?
-
- User
- Beiträge: 29
- Registriert: Montag 9. September 2002, 17:00
- Wohnort: Berlin
- Kontaktdaten:
Hi!
Zwei Dinge:
Nur um zu schauen, ob es dann funktioniert.
HTH,
Kai
Zwei Dinge:
Es kann sein, daß hier der Fehler liegt. Schreib mal als Absender eine E-mail Adresse deiner Domain rein. Wenn der SMTP-Server vernünftig konfiguriert ist, macht er nämlich nur e-mails, die auch wirklich von deiner Domain kommen. Mit einem http:// Adresse als Absender kann kein SMTP-Server was anfangen, wenn ich mich nicht täusche.MarlKarx hat geschrieben: #!/usr/bin/python
import cgi
import smtplib
empfaenger = "psfkafka@gmx.de"
absender = "http://ping/db/jandb/form/formular.html"
Ersetz vielleicht auch die letzte Zeile mal testweise durchMarlKarx hat geschrieben:betreff = "Anfrage ueber Kontaktformular"
puffer = cgi.FieldStorage ('Vorname','Nachname','Email','Sonstiges')
msg = "To: %s\n" %empfaenger
msg = msg + "From: %s\n" %absender
msg = msg + "Subject: %s\n\n" %betreff
msg = msg + str (puffer)
server = smtplib.SMTP ('xxxxxxx.de')
server.sendmail (absender, empfaenger, msg)
server.close ()
print "Location: http://ping/db/jandb/form/danke.html \n\n"
Code: Alles auswählen
print "Content-Type: text/plain\n\n"
print "Versand hat geklappt!"
HTH,
Kai
-
- Gründer
- Beiträge: 410
- Registriert: Dienstag 30. Juli 2002, 18:03
- Wohnort: Oestrich-Winkel
- Kontaktdaten:
Bitte nicht erschlage, aber ich war so frei, in den Postings jeweils den smtp server von dem Skript mit xxxxx zu versehen.
Man muss es nicht so offen zur schau tragen, denn diese Spammer sollen ja nicht evtl. unnötig gefüttert werden.
Dient nur zur Sicherheit für den betreiber von der Seite.
Also, nicht böse sein, dass ich in den Beiträgen editiert habe.
Man muss es nicht so offen zur schau tragen, denn diese Spammer sollen ja nicht evtl. unnötig gefüttert werden.
Dient nur zur Sicherheit für den betreiber von der Seite.
Also, nicht böse sein, dass ich in den Beiträgen editiert habe.
irc: #python.de @ irc.freenode.net | [url=http://pythonwiki.pocoo.org]python-wiki[/url] | [url=http://www.pythonwiki.de/PythonDeForum/Faq]python-forum FAQ[/url]
1) Contenttype: AHA, gerafft, danke!!! ,
2) danke auch für die Hinweise, ich hab es gerade geändert, bekomme aber ebenfalls nur die Fehlermeldung:
Server error!
Error message:
Premature end of script headers: FormMail.cgi
error 500
in meiner error.log erhalte ich ebenfalls nur diesen Ausdruck.
Kann mir jemand sagen, durch welche grundsätzlichen Fehler dieser error hervorgerufen wird? Oder ist das die Standartmeldung bei Ungereimtheiten?
2) danke auch für die Hinweise, ich hab es gerade geändert, bekomme aber ebenfalls nur die Fehlermeldung:
Server error!
Error message:
Premature end of script headers: FormMail.cgi
error 500
in meiner error.log erhalte ich ebenfalls nur diesen Ausdruck.
Kann mir jemand sagen, durch welche grundsätzlichen Fehler dieser error hervorgerufen wird? Oder ist das die Standartmeldung bei Ungereimtheiten?
mach mal am scriptanfang das:
und sag mir mal den fehler... der ist dann nämlich besser verständlich, es wird die Ausnamhe von Python wie normal angezeigt.
Code: Alles auswählen
import cgitb;cgitb.enable()
Hurra, keine Fehlermeldung mehr,
soweit erstmal danke an alle!!!
habe die Formatierung der Antwort einfach an den Anfang gesetzt und nun ist der Fehler weg.
#!/usr/bin/python
import cgi
import smtplib
print "Content-Type: text/plain\n\n"
empfaenger : ...
bedingt das noch ewas anderes???
Endausgabe und mailsverschicken klappt zwar trotzdem noch nicht, aber mal gucken
soweit erstmal danke an alle!!!
habe die Formatierung der Antwort einfach an den Anfang gesetzt und nun ist der Fehler weg.
#!/usr/bin/python
import cgi
import smtplib
print "Content-Type: text/plain\n\n"
empfaenger : ...
bedingt das noch ewas anderes???
Endausgabe und mailsverschicken klappt zwar trotzdem noch nicht, aber mal gucken