Seite 1 von 1
universeles email modul
Verfasst: Sonntag 15. Oktober 2006, 13:33
von Costi
ziemlich kompliziert das mit den mime-encoding, protocol, etc zu wervalten, gibts den kein email modul womit ich emails empfangen und senden kann und mich dabei um diese eher low level angelegenheiten nicht kümmern muss?
danke
Verfasst: Sonntag 15. Oktober 2006, 14:49
von Leonidas
E-Mails senden kannst du mit Gerolds
simplemail.py, welches aber nur das Senden übernimmt.
hi
Verfasst: Sonntag 15. Oktober 2006, 15:01
von rogen
zum senden.
entweder simplemail ( im forum zu finden)
oder einfach
Code: Alles auswählen
server="****com"
empfaenger = "****"
absender = "****"
server = smtplib.SMTP(server)
server.sendmail (absender, empfaenger,"text text ")
server.quit()
zum empfangen haben ich auch nichts gescheites gefunden.
mein code.:
Code: Alles auswählen
class mailer:
def __init__(self):
None
#self.frager()
def frager(self):
self.mails = []
M = poplib.POP3(host)
M.user(benutzer)
M.pass_(passw)
if len(M.list()[1]) <> 0:
for mailanzahl in range(len(M.list()[1])):
header,mes,obje = M.retr(mailanzahl+1)
text = string.join(mes, "\n")
m = email.message_from_string(text)
typen = m.items()
adresse= ""
betreff = ""
datum = ""
for a in range(len(typen)):
if typen[a][0] == "From":
adresse=typen[a][1]
if typen[a][0] == "Date":
datum=typen[a][1]
if typen[a][0] == "DATE":
datum=typen[a][1]
for a in range(len(typen)):
if typen[a][0] == "Subject":
betreff=str(typen[a][1]).decode("quopri_codec")
style = re.findall("""\=\?(.+?)\?Q\?.*""", str(betreff))
if style <> []:
betreff=betreff.replace(str(style[0]),"")
betreff=betreff.replace("=?","")
betreff=betreff.replace("?Q?","")
betreff=betreff[:-1]
anhang = ""
blocker = 0
emailarte = "text"
inhalt =""
for part in m.walk():
print "-----------part get payload-----_"
print part.get_payload()
if part.get_content_maintype() == "text" and blocker == 0 :
blocker = 1
inhalt = part.get_payload()
inhalt = inhalt.decode("quopri_codec")
if part.get_content_type() == "text/html":
emailarte = "html"
inhalt= "<html>" + inhalt
if part.get_content_maintype() == 'multipart':
continue
if part.get_filename() <> None:
#anhang.append([part.get_filename(),part.get_payload(decode=1)])
anhang = anhang + "%%%" + part.get_filename()
fp = open(os.path.join(os.curdir,"anhang/"+ part.get_filename()), 'wb')
fp.write(str(part.get_payload(decode=1)))
fp.close()
try:
s = datum.split()
ge = s[4].split(":")
d = time.strptime("%s %s %s" % (s[1], s[2], s[3]), "%d %b %Y")
zeit = str(time.strftime("%Y.%m.%d", d)).split(".")
genaueZeit = (int(zeit[0]),int(zeit[1]),int(zeit[2]),int(ge[0]),int(ge[1]),int(ge[2]),0,0,0)
genaueZeit = time.mktime(genaueZeit)
except:
genaueZeit = 1454617342
daten.einf(adresse.replace("'",""),betreff.replace("'",""),str(genaueZeit),"",inhalt.replace("'",""),str(anhang),str(emailarte),'eingang-neu')
M.quit()
self.killer()
def killer(self):
M = poplib.POP3(host)
M.user(benutzer)
M.pass_(passw)
for a in range(len(M.list()[1])):
M.dele(a+1)
M.quit()
Verfasst: Sonntag 15. Oktober 2006, 15:03
von rogen
import poplib,email
import urllib2,htmllib,formatter ,sys, smtplib, string
from email.Message import Message
usw...
Verfasst: Sonntag 15. Oktober 2006, 19:59
von Costi
hmmm wen (if, nicht when...) ich ein bissl zeit finde schreibe ich nen email modul wo mann einfach emails und atachments lesen und verschiken kann, ohne sich dumm und daemlich zu schreiben
waere sowas willkomen?
Verfasst: Sonntag 15. Oktober 2006, 23:16
von Y0Gi
Nix für ungut, aber bitte lasse dann mehr Sorgfalt beim Programmieren walten als in deinen Beiträgen der Fall ist (ist nicht böse gemeint).
Verfasst: Montag 16. Oktober 2006, 07:37
von Costi
^^ok
mühe gebe ich mir eigentlich schon......
beim programmieren ist das aber eigentlich nicht anders; unsauberkeit^10
naja ich fang dan mal an
Verfasst: Montag 16. Oktober 2006, 10:22
von BlackJack
Costi hat geschrieben:beim programmieren ist das aber eigentlich nicht anders; unsauberkeit^10
`unsauberkeit` mit 10 XOR verknüpfen!? Sicher dass Du nicht ``unsauberkeit**10`` meintest?

Verfasst: Montag 16. Oktober 2006, 18:09
von Costi
ich meinet jetzt aber das latex "^".....
dazu noch eine frage:
die __init__ meiner klasse sieht jetzt so aus:
Code: Alles auswählen
def __init__(self, email, pwd, login = 0, server_in = 0, server_out = 0, server_in_proto = 0, server_out_proto = 0):
was ist aber wenn nhemand nur server_out_proto aendern will? ich brauechte etwas wie zb in threading:
wie geht das aber?
Verfasst: Montag 16. Oktober 2006, 18:44
von BlackJack
Costi hat geschrieben:ich meinet jetzt aber das latex "^".....
Das wäre dann aber eher ``unsauberkeit^{10}``, sonst bezieht sich das ``^`` nur auf die ``1``.
dazu noch eine frage:
die __init__ meiner klasse sieht jetzt so aus:
Code: Alles auswählen
def __init__(self, email, pwd, login = 0, server_in = 0, server_out = 0, server_in_proto = 0, server_out_proto = 0):
was ist aber wenn nhemand nur server_out_proto aendern will? ich brauechte etwas wie zb in threading:
wie geht das aber?
Genauso: Klasse('
x@u.com', 'geheim', server_out_proto=42)
Sind das echt alles Zahlen die da übergeben werden? Wenn es andere Objekte sind, dann würde ich die mit `None` vorbelegen.
Verfasst: Dienstag 17. Oktober 2006, 14:11
von Costi
ok, du hast gewonnen^^
Genauso: Klasse('
x@u.com', 'geheim', server_out_proto=42)
aso, doch ganz einfach, meiner meinung nach ist das aber ein bischen gegen pythons philosofie: select, ? :, usw gibt es ja auch nicht
Sind das echt alles Zahlen die da übergeben werden? Wenn es andere Objekte sind, dann würde ich die mit `None` vorbelegen.
sollten strings sein, bei keiner angabe wird ein moglichst richtiges default wert ermittelt, aber ich kan auch None schreiben

Verfasst: Dienstag 17. Oktober 2006, 19:39
von murph
also, ich weiß nicht, was du willst...
Verfasst: Mittwoch 18. Oktober 2006, 06:23
von Costi
spezifizieren
Verfasst: Mittwoch 18. Oktober 2006, 08:42
von murph
von dem, was ich gelesen habe, dachte ich mir, dass du
(leider kann ich nicht quoten, da meine maus grade den dienst versagt hat)
ein email-modul schreiben willst, dass während der laufzeit seinen server ändert.
du hattest das mit threading eingeworfen. aber du brauchst doch zum kompletten email-handlen alle angaben, die in deiner __init__ verzeichnet sind.
daher verstehe ich nicht, was
(ah, jetzt hat es geklappt)
was ist aber wenn nhemand nur server_out_proto aendern will?
soll. meinst du, dass jemand vllt nur versenden will?
oder sollen die default-werte so sinnvoll gewählt sein, dass der nutzer vllt gar nichts ändern will?[/quote]
Verfasst: Mittwoch 18. Oktober 2006, 16:29
von Costi
oder sollen die default-werte so sinnvoll gewählt sein, dass der nutzer vllt gar nichts ändern will?
genau so,
ich hab gerade verstanden wie oop geht, also da noch was mit threading zu machen wäre ein bischen zu krass
leider kann ich nicht quoten, da meine maus grade den dienst versagt hat
hehe ist mir auch mal passiert, es gibt da eine bestimmte tastenkombi unter win, die die "tastatur maus" aktiviert