E-Mail mit Anhang

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
obelisk.asterisk
User
Beiträge: 19
Registriert: Donnerstag 14. Januar 2010, 23:12

Hallo,
ich möchte mit simplemail die csv Datei versenden es funktioniert soweit.
Wenn ich die Email abrufe ist nichts in der Datei.
wenn ich simplemail in ein eigenes Skript schreibe funktionierts.
Hier ist mein Skript.
Bedanke mich im vorraus.


Code: Alles auswählen



#!/usr/bin/python
# -*- coding: iso-8859-1 -*-


# Import librarys (Importierte Librarys von Python)                                               
import MySQLdb  
import sys
import os
import time
import datetime
import smtplib
import email
import simplemail
import csv

from simplemail import Email


# Derzeitiges Datum (Derzeitiges Datum wird deklariert)
currdate = datetime.datetime.now().strftime("%d%m%Y")

# oeffnen der csv Datei
datei=csv.writer(open('/Pfad/zur/Datei.csv', 'wb'))

#Datenbank-Connection -Cursor (Zeiger) erstellen
connect = MySQLdb.connect(host="xxxxxxxxxxx",db="xxxxxxxxxxx",user="xxxxxxxxxxxx",passwd="xxxxxxxxxxxxxxxxxx")
cursor = connect.cursor()

####
## Kopf 

standort = 'Standort';
anrufe = 'Anrufe';
anzahl = 'Anzahl der Gespraeche';
dauer = 'Dauer der Gespraeche';

datei.writerow([standort, anrufe, anzahl, dauer])
                                         
################################################################################

text1 = 'SO'
text2 = 'Tele'

cursor.execute("""SELECT COUNT(uniqueid) FROM fpdd WHERE (llop LIKE '017%' OR dst LIKE '016%' OR dst LIKE '015%') AND (calldate >= CURRENT_DATE - INTERVAL 10 DAY)""")
dat = cursor.fetchall()
for row in dat:
# datei.write(str(row[0]) + "\t")
 text3 = (str(row))

# Handy Gespraeche in min (Select abfrage und Summe bilden von der Datenbank cdr
cursor.execute("""SELECT SUM(billsec) FROM fppp WHERE (swkql LIKE '017%' OR dst LIKE '016%' OR dst LIKE '015%') AND (calldate >= CURRENT_DATE - INTERVAL 10 DAY) AND (disposition='ANSWERED')""")
dat = cursor.fetchone()

sec=dat[0]             #Variable sec Werte der Datenbank in Array gespeichert
t = time.localtime(sec)
endcalls = time.strftime("%H:%M:%S",t)
# datei.write(str(endcalls) + "\n\n")	
text4 = (str(endcalls))

# Daten in die csv Datei speichern
datei.writerow([text1, text2, text3, text4]) 



connect.close()

################################################################################


############ csv Datei per E-Mail versenden
######
###

mail = Email(
     smtp_server = "server@dddddddddd",
     smtp_user = "xxxxxxxxxxxxxxxx",
     smtp_password = "xxxxxxxxxxxxxxx"
)

# Ansender
mail.from_address = "irgendeiner@xxxxxxxxx"


# Empfaenger
mail.recipients.add("xxxxxxxxxxx@irgendeiner")

# Betreff
mail.subject = "BETREFFBETREFF"

## Nachricht
mail.message = """Hallo  """

# Anhaenge
mail.attachments.add_filename("/Pfad/zum/Skript.csv")

# Senden
if mail.send():
    print "Nachricht gesendet"
else:
    print "Die Nachricht wurde nicht versendet"



:K

Gruß,
obelisk.asterisk
Zuletzt geändert von obelisk.asterisk am Freitag 22. Januar 2010, 11:33, insgesamt 3-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo obelisk.asterisk!

Du musst die Date schließen, bevor du sie versenden kannst. Erst beim Schließen der Datei werden die Daten in die Datei geschrieben.

Dass du evt. nach dem Ausführen des Programmes eine schön gefüllte Datei hast, liegt daran, dass beim Beenden des Programmes die Datei auch geschlossen wird.

mfg
Gerold
:-)

PS: Ein Auszug aus deinem Programm -- so könnte es vielleicht etwas übersichtlicher aussehen:

Code: Alles auswählen

sql = """
SELECT 
    SUM(billsec) 
FROM 
    ast_cdr_ka 
WHERE 
    (src LIKE '0%') AND 
    (calldate >= CURRENT_DATE - INTERVAL 10 DAY) AND 
    (disposition='ANSWERED')
"""
cursor.execute(sql)
PS2: Das heißt, dass du ein eigenes File-Objekt erstellen musst, welches du schließen kannst. ``open`` NICHT als Parameter verwenden.

.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
obelisk.asterisk
User
Beiträge: 19
Registriert: Donnerstag 14. Januar 2010, 23:12

Hallo, Gerold

danke für deine Hilfe.
Das Skript läuft soweit.


Bedanke mich nochmal bei euch.
Antworten