universeles email modul

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
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

E-Mails senden kannst du mit Gerolds simplemail.py, welches aber nur das Senden übernimmt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
rogen
User
Beiträge: 85
Registriert: Dienstag 29. März 2005, 17:45
Wohnort: neustift
Kontaktdaten:

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()

rogen
User
Beiträge: 85
Registriert: Dienstag 29. März 2005, 17:45
Wohnort: neustift
Kontaktdaten:

import poplib,email
import urllib2,htmllib,formatter ,sys, smtplib, string
from email.Message import Message

usw...
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

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?
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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).
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

^^ok

mühe gebe ich mir eigentlich schon......

beim programmieren ist das aber eigentlich nicht anders; unsauberkeit^10


naja ich fang dan mal an
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? ;-)
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

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:

Code: Alles auswählen

threading.Thread(target = sth)
wie geht das aber?
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:

Code: Alles auswählen

threading.Thread(target = sth)
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.
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

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 :wink:
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

also, ich weiß nicht, was du willst...
http://www.cs.unm.edu/~dlchao/flake/doom/
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

spezifizieren
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

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]
http://www.cs.unm.edu/~dlchao/flake/doom/
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

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 :lol:

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
Antworten