Vorab entschuldige ich mich falls ich in der falschen Kategorie bin.
Nun zum Problem:
Ich hätte ein kleines Feedbackformular bei dem man Bilder hochladen kann und das ganze dann per E-Mail zugestellt wird.
Das ganze funktioniert zwar, bis auf die Kleinigkeit, das der Bildername verloren geht und jedes Bild einfach "part_2.jpg" heisst.
Zwar sehe ich den Bildername in form['images'] (self=FieldStorage('images', 'Bild2.jpg', '\xff\xd8\xf...c\xbbh&\xce\xe6\x9aP\x8fz\xd2\xcc\xcaP?\xff\xd9') aber er lässt sich nicht extrahieren! Bei der Übergabe mit getvalues oder über den key verschwindet der Name?! Auch ein form['images'][1] funktioniert nicht.
form['images'][1] löst nen Fehler aus
form.getvalue('îmages')[1] gibt mir die einzelnen Zeichen der Binärdatei aus z.B. ÿ
Weiss jemand wie?
Hier der Code, jedoch ohne extraktion des Bildnamens!
Code: Alles auswählen
#!/usr/bin/python
import cgi, cgitb
import smtplib, email.utils
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
cgitb.enable()
form = cgi.FieldStorage()
print "Content-Type: text/html"
print
receiver = 'info@foobar.ch'
sender = form.getvalue('email')
name = form.getvalue('name')
msg = form.getvalue('message')
subject = form.getvalue('subject')
image = form.getvalue('images') # Hier sollte ich irgendwie an den Bildname kommen, was aber nicht geht?!
if sender == '':
print 'Bitte E-Mail Adresse angeben'
elif name == '':
print 'Bitte Name angeben'
elif msg == '':
print 'Bitte Nachricht angeben'
else:
try:
message = MIMEMultipart()
message['To'] = email.utils.formataddr(('Chipping', receiver))
message['From'] = email.utils.formataddr((name, sender))
message['Subject'] = subject
message['Date'] = email.utils.formatdate(localtime=True)
message.attach(MIMEText(msg))
if image:
img = MIMEImage(image)
img.add_header('Content-Disposition', 'attachment; filename="%s"' % filename) # Der Teil ist unvollständig da ich den Bildname nicht aus "form['images']" oder "form.getvalue('images')" bekomme
message.attach(img)
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receiver, message.as_string())
print 'E-Mail erfolgreich versendet'
except smtplib.SMTPException:
print 'Fehler: E-Mail konnte nicht versendet werden'
PS: Nein, es ist nicht möglich ein Framework