Drag&Drop von e-Mails aus Thunderbird?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Re: Drag&Drop von e-Mails aus Thunderbird?

Beitrag von Kukulkan »

Wieso steigst du nicht einfach auf die neue Thunderbird-Version um? Wurden sicherlich viele Fehler behoben, wobei sicherlich auch einige die Sicherheit betreffen. Zudem ist das Programm ja kostenlos. Was steht also noch im Weg die neue Version zu verwenden?
Ahem. /:-> Es geht ja nicht um mich. Meine Anwendung soll Mails aus dem TB verarbeiten können. Und ich kann nicht alle meine Anwender dazu nötigen, auf eine neue Version umzusteigen. Es gibt sogar ärztliche Einrichtungen die auf TB setzen. Aber da dauert es noch etwas, bis die alle migriert haben. Ich unterstütze ja auch Outlook ab 2003 (in anderer Hinsicht. Drag&Drop kommt jetzt erst).

Grüße,

Kukulkan
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Drag&Drop von e-Mails aus Thunderbird?

Beitrag von Sicro »

Privatleute zu nötigen, eine neue Version zu verwenden, ist doch gar nicht so schlecht im Falle von Thunderbird jetzt. :wink:
Du hast aber einerseits recht: Firmen sind leider nicht immer auf dem neusten Stand, weil sie nach dem Prinzip "Never change a running system" vorgehen.

Aber nun wieder zum Thema: Das Problem hat mich gepackt und ich wollte unbedingt eine Lösung für Thunderbird 3.0 finden. :D Deshalb habe ich mich nochmal hingesetzt und ein bisschen im Internet recherchiert. Dabei konnte ich folgende Format-Strings entdecken:

Code: Alles auswählen

text/x-moz-url
text/x-moz-url-data
text/x-moz-url-desc
application/x-moz-file-promise-url
application/x-moz-file-promise
Ich bin die Format-Strings mal durchgegangen und finde das zweitletzte am geeignetsten, da es den Pfad der Datei, das Start-Byte der eMail in der Datei (number=735) und den Betreff als Dateiname liefert.

Code: Alles auswählen

OpenWindow(0,1,1,500,500,"test")
CF_Format = RegisterClipboardFormat_("application/x-moz-file-promise-url")
EnableWindowDrop(0,CF_Format,#PB_Drag_Copy)

Repeat
  e = WaitWindowEvent()
  
  If e = #PB_Event_WindowDrop
    *Buffer = EventDropBuffer()
    
    Repeat
      RetVal.s = PeekS(*Buffer)
      If RetVal = ""
        Break
      EndIf
      Return_Text.s + RetVal
      *Buffer + 2
    ForEver
    MessageRequester("",Return_Text)
    
    ; Ausgabe:
    ; mailbox:///C|/Dokumente%20und%20Einstellungen/Alexander/Anwendungsdaten/Thunderbird/Profiles/xxrj66w7.Default/
    ; Mail/Local%20Folders/Unsent%20Messages?number=735&fileName=Meine Test eMail.eml
  EndIf
Until e = #PB_Event_CloseWindow
Den Rest müsstest du nun recht einfach hinbekommen.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Re: Drag&Drop von e-Mails aus Thunderbird?

Beitrag von Kukulkan »

Hallo Sicro,

das ist eine gute Idee. Das ist dann ein MBOX Format und ich kann mit dem Startbyte drauf zugreifen. Auf die Idee bin ich gar nicht gekommen. Werde das nach dem Urlaub gleich mal ausprobieren. :allright:

Danke!

Kukulkan
Benutzeravatar
dige
Beiträge: 1235
Registriert: 08.09.2004 08:53

Re: Drag&Drop von e-Mails aus Thunderbird?

Beitrag von dige »

Moment! Wieso funktioniert das? Prüft Thunderbird beim Drag'n Drop ob ein bestimmtes Clipboard
Format bekannt ist und ändert damit den Drop Inhalt?

Und was kann man denn mit der URL machen? Im Gegensatz zum "normalen" Drag'n Drop
wird ja temporär eine .eml Datei im Temp-Verzeichnis abgelegt.

In Deinem Fall müsste man die Inbox Datei nach der Message ID parsen und sich den Text
rausgrabben?
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Drag&Drop von e-Mails aus Thunderbird?

Beitrag von Sicro »

dige hat geschrieben:Moment! Wieso funktioniert das? Prüft Thunderbird beim Drag'n Drop ob ein bestimmtes Clipboard
Format bekannt ist und ändert damit den Drop Inhalt?
Thunderbird sendet dem Ziel-Element (Gadget oder Window) alle Drop-Formate, die er anbieten kann. Das Ziel-Element pickt sich dann das Format heraus welches unterstützt wird.
Dabei sendet Thunderbird das "beste" Format zuerst - also das was am meisten Informationen liefert. Wenn dein Programm das Format aber nicht unterstützt greift Thunderbird zum nächstbesten Format usw.

In der PureBasic Hilfe steht auch etwas darüber:
PureBasic Hilfe: DragOSFormats() hat geschrieben:Wenn mehrere Formate "verschoben" werden, wird das Ziel das erste - welches es erkennt - akzeptieren. Daher sollte das Format, welches die meisten Informationen enthält (d.h. die genauesten Daten darstellt), das erste im Array sein, während die üblichen aber weniger inhaltsreichen Formate später folgen. Auf diesem Weg wird jede Applikation die beste Darstellung von Daten erhalten, welche sie versteht.
dige hat geschrieben:Und was kann man denn mit der URL machen? Im Gegensatz zum "normalen" Drag'n Drop
wird ja temporär eine .eml Datei im Temp-Verzeichnis abgelegt.

In Deinem Fall müsste man die Inbox Datei nach der Message ID parsen und sich den Text
rausgrabben?
Eigentlich beantwortest du deine Frage schon von selbst.
Aus der URL kann herausgelesen werden:
* in welcher Datei die Nachricht gespeichert ist
* wie der Betreff der Nachricht heißt (vereinfacht auslesbar, könnte man natürlich auch der Datei entnehmen)
* wo die gewünschte Nachricht in der Datei anfängt (Start-Byte)

Ist zwar nicht ganz so komfortabel wie ein normales Drag&Drop, aber immerhin mal ein Lösungsweg :wink:
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Antworten