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 Python Forum,
ich möchte eine E-Mail über smtplib versenden.
Mein Problem wie kann man einen String übergeben an die Methode sendmail des Moduls smtplib und versenden.

Code: Alles auswählen


from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.mime.text import MIMEText

msg = MIMEMultipart()
msg["Subject"] = "Hallo Testmail"
msg["From"] = "Obelisk <obelisk@asterisk.de>"
msg["To"] = "Asterisk <asterisk@obelisk.de>"


text = MIMEText("Obelisk und Asterisk im Anhang")
msg.attach(text)


csv = open("/home/user/script/das_zu_versendete_script_.csv")
datei = MIMEText(csv.read())
csv.close()
msg.attach(datei)


print msg.as_string()


Bedanke mich im vorraus

obelisk.asterisk



:D :D :D
obelisk.asterisk
User
Beiträge: 19
Registriert: Donnerstag 14. Januar 2010, 23:12

Hallo,

1. Versuch gescheitert warum??????



Code: Alles auswählen


from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.mime.text import MIMEText

msg = MIMEMultipart()
msg["Subject"] = "Hallo Testmail"
msg["From"] = "Obelisk <obelisk@asterisk.de>"
msg["To"] = "Asterisk <asterisk@obelisk.de>"


text = MIMEText("Obelisk und Asterisk im Anhang")
msg.attach(text)


csv = open("/home/user/script/das_zu_versendete_script_.csv")
datei = MIMEText(csv.read())
csv.close()
msg.attach(datei)


print msg.as_string()




msg = smtplib.SMTP("mail.astobelisk.de")
msg.login("USERNAME", "USERPASSWORD")
(235, '2.0.0 Authentication successfull')
msg.sendmail(
		"obelisk <obelisk@asterisk.de>",
		"asterisk<asterisk@obelisk.de>",
		"BLA BLA BLA",)
{}
msg.quit()

:( :(
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Am besten verweise ich gleich auf gerold's simplemail: http://www.python-forum.de/topic-3158.html
obelisk.asterisk
User
Beiträge: 19
Registriert: Donnerstag 14. Januar 2010, 23:12

Hallo,
danke für die Hilfe ich habe mir das Modul angeschaut.
Das ist genau das was ich gesucht habe.
Ich habe mir den text kopiert, irgendwie läuft es nicht.
Bedanke mich schon im vorraus für die hilfe.

Code: Alles auswählen



#!/usr/bin/python
# -*- coding: utf-8 -*-


#simplemail iportieren
from simplemail import Email

email = Email(
    smtp_server = "mailserver.de",
    smtp_user = "mailuser",
    smtp_password = "passwordxxxxxxxxxxxx"    
)

# Absender
email.from_address = "meine.blabla@das.de"

# Empfaenger
email.recipients.add("empfänger@dies.de")

# Betreff
email.subject = "TEXT_TEXT"

# Nachricht
email.message = \
    "Hallo erst mal\n" + \ 
    "\n" + \
    "wie geht es dir\n" + \
    "\n" + \
    "Gruß\n" + \ 
    "ast\n" + \ 
    ":-)"

# Anhaenge
email.attachments.add_filename("/tmp/anhang/datei_für_den_anhang.csv")

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


Kann mir jemand helfen ?
Bedanke mich im vorraus.

obelisk.asterisk :D
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

.... irgendwie läuft es nicht?

Was passiert denn genau?
  • - macht Dein DVD Laufwerk so komische Geräusche, als ob Du einer Katze auf den Schwanz getreten wärst?
    - kommen so komische Rauchzeichen aus den Öffnungsschlitzen Deines Monitors, die nach dem MC-Donlad Zeichen aussehen?
    - versucht Deine Maus sich selbstständig zu machen, um Dir Käse aus dem Kühlschrank zu stehlen?
>>Masaru<<
obelisk.asterisk
User
Beiträge: 19
Registriert: Donnerstag 14. Januar 2010, 23:12

Beim ausführen des Skripts sagt er das es das simplemail modul nicht gibt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

obelisk.asterisk hat geschrieben:Beim ausführen des Skripts sagt er das es das simplemail modul nicht gibt.
Hallo obelisk.asterisk!

Entschuldige bitte meine nicht präzise Antwort. Aber das kann ich mir jetzt nicht verkneifen. ;-)

Was könntest du vergessen haben, wenn dein Programm das Modul >>> simplemail <<< nicht finden kann?

mfg
Gerold
:-)
Zuletzt geändert von gerold am Montag 18. Januar 2010, 21:37, insgesamt 2-mal geändert.
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

z.B import simplemail

Ein import habe ich schon probiert.
Es funktioniert nicht.


mfg,
obelisk.asterisk
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Er sagt, dass es simplemail nicht gibt. Er kann es also nicht finden, was heisst, dass du das herunterladen und in den gleichen Ordner wie dein aktuelles File legen musst.

Download: http://gelb.bcom.at/trac/simplemail/bro ... format=raw

Ich denke ein Einblick in Module wäre nicht verkehrt.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

gerold hat geschrieben:...
Entschuldige bitte meine nicht präzise Antwort. Aber das kann ich mir jetzt nicht verkneifen. ;-)
...
:lol: Du hast ja doch ein Quentchen Sarkasmus in Dir gerold ... der Tag wird rot im Kalender markiert *g*
Benutzeravatar
snafu
User
Beiträge: 6753
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

gerold hat geschrieben:Entschuldige bitte meine nicht präzise Antwort.
Och, schade. Also mich hätte die Antwort schon interessiert... :(
obelisk.asterisk
User
Beiträge: 19
Registriert: Donnerstag 14. Januar 2010, 23:12

Hallo,
endlich läuft das Skript. Durch das Downloaden der Datei in den Ordner
des Skriptes wurde das Problem [GELÖST].
SUPER, DANKE an euch.

Code: Alles auswählen



#simplemail importieren
from simplemail import Email

mail = Email(
     smtp_server = "server.com",
     smtp_user = "NAME",
     smtp_password = "XXXXXXXXXXXX"
)

# Ansender
mail.from_address = "ichich@ICHICH.de"


# Empfaenger
mail.recipients.add("du@du.de")
mail.recipients.add("dudu@dudu.com")


# Betreff
mail.subject = "BLABLABLA"

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

# Anhaenge
mail.attachments.add_filename("/hier/ist/der/anhang_.csv")

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



Eine Frage hab ich noch wie trenne ich die Daten in einer csv Datei.
Kann man das mit einem Semikolon trennen????????

Bedanke mich nochmal bei euch besonders bei Gerold DANKE :D

Gruß,

obelisk.asterisk

:wink: :wink:
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

obelisk.asterisk hat geschrieben:... Eine Frage hab ich noch wie trenne ich die Daten in einer csv Datei.
Kann man das mit einem Semikolon trennen????????
...

CSV verwendet zwar eigentlich (wie der Name schon sagt und gemäß RFC 4180) das "Komma" als Feld-Separator, aber die Verwendung von Semikolon ist durch aus bereits dank anderer Spezifikationen und Implementierungen (z.B. in Excel) bekannt.

Um CSV-Dateien zu Lesen kannst Du den mitgelieferten [mod]csv#csv.reader[/mod] und zum Schreiben den äquivalenten [mod]csv#csv.writer[/mod] von Python verwenden.

>>Masaru<<
obelisk.asterisk
User
Beiträge: 19
Registriert: Donnerstag 14. Januar 2010, 23:12

Hallo ich benutze gerade das Modul csv.
Das Skript läuft soweit mit dem Modul csv.
AAAAAAAber ein Problem hab ich noch.
Wenn ich das Skript gesendet habe und es mit exel öffne ist nichts in der Datei.
Woran kann das liegen?????????

Bedanke mich im vorraus

Gruß, obelisk.asterisk
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Da meine Zauberkugel gerade in der Reinigung ist ... zeig doch bitte ein wenig SourceCode, ja? In Deinen letzten src-posts war nämlich CSV nicht mehr enthalten.

Danke
>>Masaru<<
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