Seite 1 von 1

Verfasst: Donnerstag 21. Januar 2010, 08:39
von obelisk.asterisk
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

Verfasst: Donnerstag 21. Januar 2010, 19:10
von gerold
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.

.

Hallo

Verfasst: Freitag 5. Februar 2010, 12:17
von obelisk.asterisk
Hallo, Gerold

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


Bedanke mich nochmal bei euch.