noisefloor hat geschrieben:Hallo,
die Textdaten aus dem Formular musst du halt als Inhalt in deine E-Mail schreiben und die Datei als Anhang anhängen. Wie das geht findest du ziemlich sicher in der Doku von Marrow Mailer.
Gruß, noisefloor
Hallo
Also in der Doku - wenn man das überhaupt als Doku bezeichnen kann - hab ich nichts gefunden. Aber auch egal. Ich bin nun ein ganzes Stück weiter gekommen.
Ein paar Fragen hätte ich dennoch:
1: habe ich noch ein ascii Problem mit Umlauten etc:
Code: Alles auswählen
Error 500: Internal Server Error
Sorry, the requested URL 'http://localhost:8081/kontakt' caused an error:
Internal Server Error
Exception:
UnicodeDecodeError('ascii', '\xc3\xbc', 0, 1, 'ordinal not in range(128)')
Traceback:
Traceback (most recent call last):
File "C:\Projekte\Kontaktformular\bottle.py", line 651, in _handle
return callback(**args)
File "C:\Projekte\Kontaktformular\bottle.py", line 1145, in wrapper
rv = callback(*a, **ka)
File "home.py", line 31, in kontakt
form=form,errors=form.errors)
File "C:\Projekte\Kontaktformular\bottle.py", line 2419, in template
return TEMPLATES[tpl].render(kwargs)
File "C:\Projekte\Kontaktformular\bottle.py", line 2393, in render
self.execute(stdout, kwargs)
File "C:\Projekte\Kontaktformular\bottle.py", line 2380, in execute
eval(self.co, env)
File "kontakt2.tpl", line 37, in <module>
{{!form.kommentar(class_="imp")}} <br /></td>
File "C:\Python27\lib\site-packages\wtforms\fields\core.py", line 136, in __call__
return self.widget(self, **kwargs)
File "C:\Python27\lib\site-packages\wtforms\widgets\core.py", line 221, in __call__
return HTMLString(u'<textarea %s>%s</textarea>' % (html_params(name=field.name, **kwargs), escape(unicode(field._value()))))
File "C:\Python27\lib\site-packages\wtforms\fields\core.py", line 477, in _value
return unicode(self.data) if self.data is not None else u''
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)
Wo könnte der Fehler hier liegen?
Und die andere Frage ist, ob der Aufbau des Skrips überhaupt so richtig ist. Hier mal die Bottle-App:
Code: Alles auswählen
@route('/kontakt')
@route('/kontakt', method='POST')
def kontakt():
req = request.forms
form = forms.KontaktFormular(req)
if not req or not form.validate():
return template('auswahl2.tpl',
form=form,errors=form.errors)
else:
maildelivery.mailer.start()
message = Message(author="From: '{0}' <{1}>" .format(form.name.data, form.email.data), to=u"Mein Name<meine@domain.com>")
message.subject = u'{0}'.format(form.betreff.data)
message.plain = u'{0}'.format(form.kommentar.data)
maildelivery.mailer.send(message)
maildelivery.mailer.stop()
return u'Hallo {0}, die Nachricht wurde erfolgreich übermittelt.'.format(form.name.data)
Und das marrow.mailer Skript namens maildelivery.py
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf -8 -*-
from marrow.mailer import Mailer, Message
import forms
mailer = Mailer(dict(
transport = dict(
use = 'smtp',
host = 'mail.meineDomain.com',
port = '587',
username = 'xxxxxx',
password = 'xxxxxx',
# tls = 'required',
debug = True),
manager = dict()))
Das Versenden der Daten geht relativ Lange im Vergleich zu meinem Contao CMS. Oder liegt es nur daran, dass ich Bottle z.Z noch lokal laufen habe und noch nicht auf dem Server?
EDIT:
Hier noch ein Auszug aus dem Template:
Code: Alles auswählen
<tr>
<td><strong>{{!form.name.label()}}</strong><br />
{{!form.name(class_="imp")}} <br /></td>
<td><strong>{{!form.email.label()}}</strong><br />
{{!form.email(class_="imp")}}</td>
</tr>
mfg