Datei auslesen und als Body in einer EMail geben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Kris
User
Beiträge: 4
Registriert: Dienstag 8. November 2005, 14:28
Wohnort: Köln
Kontaktdaten:

Donnerstag 10. November 2005, 13:49

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.
pwneD ! ;(
Kris
User
Beiträge: 4
Registriert: Dienstag 8. November 2005, 14:28
Wohnort: Köln
Kontaktdaten:

Donnerstag 10. November 2005, 14:17

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.
pwneD ! ;(
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Donnerstag 10. November 2005, 14:54

Nächstes mal bitte in

Code: Alles auswählen

 tags :-)
TUFKAB – the user formerly known as blackbird
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 10. November 2005, 17:01

[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 :(
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Donnerstag 10. November 2005, 23:58

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".
Antworten