[Python-de] imaplib exchange (Microsoft Office Document)

Uwe Hentzschel uhe at gmh-systems-ost.de
Mi Jul 29 14:14:58 CEST 2009


Hallo,

Am 29.07.2009 um 13:36 schrieb Christopher Arndt:

> Hallo Uwe,
>
> Uwe Hentzschel schrieb:
>> ich möchte Mails aus einem Exchange-Ordner (IMAP) auslesen und
>> später archivieren. Als Anzeige der archivierten Mail soll Outlook
>> verwendet werden (msg-Format).
>
> Was soll "msg-Format" genau heißen?

OK - wenn ich per Drag'n'Drop eine Mail aus der Inbox (Outlook)
auf den Desktop ziehe entsteht eine Datei <subject der mail>.msg
Type "Outlook-Element".
Vorteil - Doppelklick auf das File öffnet Outlook und zeigt die
Mail an.

Von http://www.fileformat.info/format/outlookmsg:
MSG files are outlook messages saved as files. They are saved as "COM  
stuctured storage OLE2 compound documents" or "DocFile", which is the  
same technique used by Word, Excel and many many more.
>> Mir ist es bisher nur gelungen
>> die Mails als "RFC 822 mail text" zu schreiben und damit kann
>> Outlook 200x nichts anfangen.
>
> "nichts anfangen" ist ungefähr so genau wie "geht nicht". Bitte  
> liefere
> eine genauere Beschreibung des Fehlers/unerwarteten Verhaltens, wenn  
> wir
> dir helfen sollen. Ich kann mir eigentlich nicht vorstellen, das  
> Outlook
> RFC 822 formatierte Nachrichten nicht anzeigen kann.

Ziel ist wie gesagt ein Doppelklick auf eine archivierte Mail soll  
Outlook
öffnen und anzeigen.

"RFC 822 mail text" wäre als ein MIME Format analog Outlook Express  
(*.eml)
Und das öffnet Outlook 200x nicht (wird nicht unterstützt).

Die Mail an sich kann ich ja Lesen und entsprechend für die Archivierung
auswerten. Ich bräuchte nur die unmanipulierte Mail als File fürs
Archive.

Eine Einschränkung wäre noch, das Skript läuft auf einem Linux Server.
Ich kann also keine win32 Python Module verwenden.

>
>> Gibts da einen Möglichkeit?
>
> Mozilla Thunderbird zur Anzeige nehmen?
>
>> #######################################################
>> #!/usr/bin/env python
>>
>> import imaplib
>> import imaplib_connect
>>
>> c = imaplib_connect.open_connection()
>>
>> print c.select('INBOX')
>>
>> for msg_id in c.search(None, 'ALL')[1][0].split():
>>    print msg_id
>>    fp = open('%s.eml' % msg_id, 'w')
>>    fp.write(c.fetch(msg_id, '(RFC822)')[1][0][1])
>>    fp.close()
>>
>> c.logout()
>> #######################################################
>
> Der Code scheint ok, vielleicht liegt's am Format der E-mails selbst?
> Kannst du irgendwo Beispieldaten posten, z.B. in einem Pastebin?
>
>
> Chris
>
> _______________________________________________
> python-de maillist  -  python-de at python.net
> http://python.net/mailman/listinfo/python-de





Mehr Informationen über die Mailingliste python-de