Seite 1 von 1

Datei auslesen und als Body in einer EMail geben

Verfasst: Donnerstag 10. November 2005, 13:49
von Kris
Warum funktioniert folgendes Script nicht ?

beim 4ten Parameter gebe ich eine TXT Datei an ...

Code: Alles auswählen

# Email
import sys, smtplib

empfaenger = sys.argv[1]
absender = sys.argv[2]
betreff = sys.argv[3]
datei = open (sys.argv[4], 'r')
body = datei.readlines ()
datei.close ()

msg = "To: %s\n" %empfaenger
msg = msg + "From: %s\n" %absender
msg = msg + "Subject: %s\n\n" %betreff  
msg = msg + body

smtp_server = smtplib.SMTP ('exchange.pironet-ndh.local')
smtp_server.sendmail (absender, empfaenger, msg)
smtp_server.quit()

---

ich erhalte folgende Fehlermeldung :

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Dokumente und Einstellungen\kklepers\Desktop\mail.py", line 14, in ?
    msg = msg + body
TypeError: cannot concatenate 'str' and 'list' objects
---

was ich will ist klar oder ?

mfg KRIS

Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Donnerstag 10. November 2005, 14:17
von Kris

Code: Alles auswählen

# Email
import sys, smtplib

empfaenger = sys.argv[1]
absender = sys.argv[2]
betreff = sys.argv[3]
datei = open (sys.argv[4], 'r')
body = datei.readlines ()
datei.close ()

msg = "To: %s\n" %empfaenger
msg = msg + "From: %s\n" %absender
msg = msg + "Subject: %s\n\n" %betreff  
for item in body : msg = msg + item

smtp_server = smtplib.SMTP ('exchange.pironet-ndh.local')
smtp_server.sendmail (absender, empfaenger, msg)
smtp_server.quit()
---

so funktionierts :)

sry war schneller ;(

Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Donnerstag 10. November 2005, 14:54
von mitsuhiko
Nächstes mal bitte in

Code: Alles auswählen

 tags :-)

Verfasst: Donnerstag 10. November 2005, 17:01
von Leonidas
[quote="blackbird"]Nächstes mal bitte in

Code: Alles auswählen

 tags :-)[/quote]
ACK.
Die meiste Zeit hier verbringe ich damit, Code in Tags zu setzen :(

Verfasst: Donnerstag 10. November 2005, 23:58
von BlackJack
Ich würde ja

Code: Alles auswählen

bode = datei.read()
benutzen. Dann wird die Datei komplett als eine einzige Zeichenkette eingelesen und nicht als Liste von Zeilen. Die fügst Du ja eh wieder zusammen, also warum erst trennen.

Zusammenfügen wäre übrigens mit

Code: Alles auswählen

msg + ''.join(body)
schneller und "pythonischer".