Python und pop --> eMails ohne attachements herunterladen

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
Felix
User
Beiträge: 8
Registriert: Sonntag 30. November 2008, 02:09

Hallo liebe Python Gemeinde,
ich versuche nun schon seit einiger Zeit mein Mails vom e-Mail Accoount mit pop herunterzuladen. Dies funktioniert eigendlich tadellos. Nun habe ich aber das Proplem, das die Attachements auch heruntergeladen werden, was enorme Zeit benötiht. Da ich das script aber auf einen System herunterladen möchte wo ich nur eine Konsole zur Verfügung habe, bringen mir die Attachements nichts.
Ich bräuchte nur das Datum, die Zeit, den Sender und der Textinhalt von dem Mail.
Den Code welcher ich verwende habe ich in dem Forum gefunden und meinen Bedürfnissen angepasst.
Er Sieht momentan so aus.

Code: Alles auswählen

# -*- coding: UTF-8 -*-

import poplib, email
from email.Utils import parsedate
from datetime import datetime
import base64

def get_emails(server, port, login, passwd, anz_mail):
    mails = []
    mailer = poplib.POP3(server, int(port))
    mailer.user(login)
    mailer.pass_(passwd)
    
    status = mailer.stat()
    print '---'
    print status
    print '---'
    num = int(status[0])
    if num > int(anz_mail):
        x = int(anz_mail)
    else:
        x = num
    i = 0
    while i < int(x):
        print num
        msg = email.message_from_string('\n'.join(mailer.retr(num)[1]))
        print 'hallo'
        date_string = parsedate(msg['Date'])
        mail = {}
        print 'title'
        mail['title'] = msg['Subject']
        print 'sender'
        mail['sender'] = msg['From']
        print 'time'
        mail['time'] = '%s:%s:%s' % (date_string[3], date_string[4], date_string[5])
        print 'date'
        mail['date'] = '%s.%s.%s' % (date_string[2], date_string[1], date_string[0])
        #mail['date'] = datetime(date_string[0], date_string[1], date_string[2], date_string[3], date_string[4], date_string[5])
        #if msg.is_multipart():
        #   mail['text'] = msg.get_payload()[0].get_payload()
        #else:
        #   mail['text'] = msg.get_payload()
        #print msg.get_charsets()
        mails.append(mail)
        i = i + 1
        num = num - 1
    

    print mails
    return mails
Nun glaube ich das der Code msg = email.message_from_string('\n'.join(mailer.retr(num)[1])) die Mails in die Variable msg schreibt.
Habe aber bis anhin nicht herausgefunden, wie ich diese Zeile umschreiben muss, so das die Attachements nicht heruntergeladen werden.
Für einen Tipp bin ich dankbar oder noch besser einen Link zu einer guten Doku über die Python Module POP, POP_SSH, IMAP und IMAP_SSH.

Gruss Alex
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Bei Deinem POP-Problem kann ich Dir nicht weiter helfen, für IMAP empfehle ich Dir die RFC3501. Wenn Du während des Lesens immermal auf die Dokumentation von imaplib schielst, merkst Du, daß das eigentlich alles wichtige schon vorhanden ist und wo der Implementationshase hinhoppeln muß. (Wenn ich mich recht entsinne, fehlen einige Quotabefehle, die mußte ich damals für CyrusIMAP nachimplementieren.)
Felix
User
Beiträge: 8
Registriert: Sonntag 30. November 2008, 02:09

THX für den Link,
habe die Dok mal schnell überflogen. Sieht interessant aus.
Werde mich dan mal in den nächsten Tagen einlesen und ein bischen mit IMAP rumtesten.

Gruss Felix
Antworten