Drop Emails von Outlook in eine JList

Lehrlii

Mitglied
Hallo zusammen,

ich hab die Anforderung von meinem Chef dass ich eine Anwendung entwickle mit welcher es möglich ist Dateien auf einen Server hochzuladen. Soweit funktioniert das auch, nun habe ich aber einen neue Anforderung mit welche ich über Drag'n'Drop Unterstützung direkt Emails aus Outlook als .msg Datei hinzufüge. Im Idealfall sollte das ohne bisherigen Zwischenschritt, dass der User zuerst die E-Mail abspeichert muss und sie dann hinzufügt geschehen, geschehen.

Kennt oder hat wer vll. zu diesem Thema eine Lösung oder einen guten Ansatz?

Mein bisheriger Code für die Drag'n'Drop Unterstützung sieht wie folgt aus:

Er bietet die Möglichkeit ganze Ordner in ein Objekt zu ziehen und die Dateien welche enthalten sind, inklusive der in den Unterordner enthaltenen Dateien, werden als Liste mit dem Dateipfad zurückgegeben.
Java:
class MyDragDropListener implements DropTargetListener {
    
    public static List<File> files=null;
    
    @Override
    public void drop(DropTargetDropEvent event) {
        
        boolean isNoFile=false;
      
        // Accept copy drops
        event.acceptDrop(DnDConstants.ACTION_COPY);
  
        // Get the transfer which can provide the dropped item data
        Transferable transferable = event.getTransferable();
  
        // Get the data formats of the dropped item
        DataFlavor[] flavors = transferable.getTransferDataFlavors();
  
        // Loop through the flavors
        for (DataFlavor flavor : flavors) {
  
            try {
  
                // If the drop items are files
                if (flavor.isFlavorJavaFileListType()) {
  
                    // Get all of the dropped files
                    try {
                        List<File> files = (List<File>) transferable.getTransferData(flavor);
                    }catch (Exception e) {
                        // Print out the error stack
                        e.printStackTrace();
                        isNoFile=true;
                    }
                    if(!isNoFile){
                        ArrayList<String> filesArray = new ArrayList<String>();
                        //get the contet of directories and subdirectories
                        boolean containsDirs = false;
                        do {
                            containsDirs=false;
                            for(int i=0; i < files.size(); i++) {
                                if(files.get(i).isDirectory()) {
                                    files=getFiles(files);
                                    containsDirs=true;
                                    break;
                                }
                            }
                            
                        }while(containsDirs == true);
                        
                        for (File file : files) {
                            filesArray.add(file.toString());
                        }
    
                        SelectFileWindow.addFiles(filesArray);
                    }else {
                      try
                      {
                          DataFlavor[] dataFlavors=transferable.getTransferDataFlavors();
                          //event.acceptDrop(DnDConstants.ACTION_COPY);
                          ArrayList<String> test = new ArrayList<String>();
                          for(int i=0;i<dataFlavors.length;i++)
                          {
                              if(dataFlavors[i].getRepresentationClass().equals(Class.forName("java.lang.String")))
                              {
                                  String string=(String)transferable.getTransferData(dataFlavors[i]);
                                  System.out.println(string);
                                  test.add(string);
                              }
                          }

                          event.dropComplete(true);

                      }

                      catch(Exception ex)
                      
                      {

                        ex.printStackTrace();

                      }

                    }
                }
  
            } catch (Exception e) {
  
                // Print out the error stack
                e.printStackTrace();
            }
        }
  
        // Inform that the drop is complete
        event.dropComplete(true);

    }
  
    @Override
    public void dragEnter(DropTargetDragEvent event) {
    }
  
    @Override
    public void dragExit(DropTargetEvent event) {
    }
  
    @Override
    public void dragOver(DropTargetDragEvent event) {
    }
  
    @Override
    public void dropActionChanged(DropTargetDragEvent event) {
    }
    
    public List<File> getFiles(List<File> files){
      
      //etract Content of directories and subdirectories
      List<File> dirContent = new ArrayList<File>();
      
      for(File file : files){
          if(file.isDirectory()) {
              File[] dirFiles = file.listFiles();
              for(int j=0; j < dirFiles.length; j++) {
                  dirContent.add(dirFiles[j]);
              }
            continue;
            }
            dirContent.add(file);
        }
        
      return dirContent;
    }
}

MfG Lehrlii
 
Zuletzt bearbeitet von einem Moderator:

Tobse

Top Contributor
Du musst zunächst herausfinden, ob Outlook die E-Mails per Drag'n'Drop nach aussen frei gibt. Wenn es das nicht tut hast du keine Chance.
Wenn es das tut, musst du natürlich die richtigen Flavors registrieren und Java dazu kriegen, dass es auch daten von aussen annimmt (wie letzteres geht weiss ich leider nicht).

Im Optimalfall hast du dann die Daten, welche Outlook frei gibt, per Drag'n'Drop in deiner Anwendung. Die .msg-Datei musst du selbst speichern, da gibts aber sicherlich Libraries für.
 

HDGoldi

Mitglied
Wie Tobse schon gesagt hat muss du erst mal in Outlook schauen.
Wenn ich mich recht erinnere tut es Outlook nicht automatisch wenn man eine Mail raus zieht bsp auf den Desktop dort speichern.
Das könntest du aber über ein Office Plugin Lösen was dann jeder haben muss damit es klappt.
Wäre über VBA zu lösen und dann in Startup von Outlook oder halt ein richtiges Plugin Entwickeln.
 

Lehrlii

Mitglied
zuerst einmal danke für die schnelle Rückmeldung.

man kann E-Mails aus Outlook mittels Drag'n'Drop in den Windows Explorer ziehen, da wird dann ein .msg Datei erstellt.

Nach etwas längerer Zeit im Debuger ist mir aufgefallen, dass es sich um mehrere Flavors handelt welche übergeben werden bzw. Java dort hinein interpretiert. Wenn ich Dateien hinein droppe ist das nur eine Flavor pro Datei. Die erste Flavor ist z.B. eine Flavor für eine Datei und dann versucht er sie als bereits existierende Datei zu verabeiten, aus diesem Grund bekomme ich auch eine Exception, wenn ich die Flavor in eine List<File> anhängen will.

Wenn ich nach der Klasse String suche bekomme ich den Absender, Empfänger und Betreff auslesen.

D.h. ich muss mir einen Algorithmus bauen wo ich die einzelnen Flavors richtig interpretiere welche übergeben werden. Bin ich da richtig in meiner Annahme?

MfG Lehrlii
 
Zuletzt bearbeitet:

Tobse

Top Contributor
D.h. ich muss mir einen Algorithmus bauen wo ich die einzelnen Flavors richtig interpretiere welche übergeben werden. Bin ich da richtig in meiner Annahme?

Richtig. Ich gehe stark davon aus, dass Outlook immer den/die gleichen Flavour(s) verwendet. Auch die Anordnung der Transferables (also Betreff, Nachricht, Empfänger etc) sollte immer die gleiche sein.
Diese Daten kannst du dann benutzen um eine .msg Datei an euren Server zu schicken.
 

Lehrlii

Mitglied
Eine Auswertung der Daten ist nicht möglich
Die flavors die ich bekommen enthalten nur den Header, welcher mir alleine nichts bringt.
Ich habe es noch über das Apache poi Projekt versucht dieses braucht aber ein bestehendes .msg File

Der Nutzten zahlt sich nicht aus um in diese Richtung weiter zu arbeiten, deswegen wurde der Punkt bei uns eingestellt.
Dieses Thema kann geschlossen werden
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Grid und drag and drop Allgemeine Java-Themen 1
G Drop down Button Menü (Combobox) Allgemeine Java-Themen 7
offi Drag and Drop mehrerer File aus Explorer in JTable Allgemeine Java-Themen 1
G Drag and Drop und trotzdem MouseEvents Allgemeine Java-Themen 3
T Java Excel Drop Down Formularsteuerelement Allgemeine Java-Themen 0
G Datei per Drag and Drop auf den Link öffnen Allgemeine Java-Themen 6
S GUI - Drag & Drop Elemente Allgemeine Java-Themen 10
S Falsches Encoding bei Drag and Drop von Umlauten Allgemeine Java-Themen 16
R Drang and Drop: Tab bei Firefox Allgemeine Java-Themen 13
L jTable drag & drop einzelner Zeilen Allgemeine Java-Themen 4
D [Drag&Drop] Design-Pattern-Frage Allgemeine Java-Themen 4
C Drag & Drop, Icons sollen getauscht werden Allgemeine Java-Themen 4
vladimir Welche API für Grafik und Drag&Drop Allgemeine Java-Themen 3
M Zwischenablage/ Drag and Drop Allgemeine Java-Themen 9
G Drag & Drop Allgemeine Java-Themen 6
M Drag and Drop FileListFlavor unter Ubuntu - Nautilus Allgemeine Java-Themen 5
M Drag and Drop: 3 Fragen Allgemeine Java-Themen 3
G Drag&Drop von Textdateien Allgemeine Java-Themen 13
G Datei Verknuepfung, drag&drop Plattformunabhaengig Allgemeine Java-Themen 3
T Drag und Drop von Applet 1 zu Applet 2 _in_ derselben VM Allgemeine Java-Themen 9
T JLable Drag und Drop Allgemeine Java-Themen 4
R Drag und Drop - Fehler während Laufzeit Allgemeine Java-Themen 14
R Drag und Drop von externen Files geht nur als Application Allgemeine Java-Themen 2
P drag und drop und move mit 2 Fenstern fkt. nicht 100 %ig Allgemeine Java-Themen 7
F Drag&Drop Allgemeine Java-Themen 10
M In JTables Drag und Drop verbieten Allgemeine Java-Themen 2
L Drag and Drop Table Allgemeine Java-Themen 9
U Drag & Drop Allgemeine Java-Themen 2
E Frage zu Drag and Drop Allgemeine Java-Themen 2
S Drag&Drop einer Datei, wie nur den Dateipfad erhalten? Allgemeine Java-Themen 9
B Java Mail: Prüfung auf neue Emails Allgemeine Java-Themen 1
B Java Mail: Emails sortieren? Allgemeine Java-Themen 5
KaffeeFan EMails versenden in Java Allgemeine Java-Themen 18
H Java und Emails Allgemeine Java-Themen 8
G emails per Java empfangen Allgemeine Java-Themen 3
J Externe File Emails für JavaMail Allgemeine Java-Themen 4
T Automatische Emails versenden mit Java? Allgemeine Java-Themen 5
C Outlook msg-Datei Anhänge extrahieren Allgemeine Java-Themen 2
M Email-Versand Java+Outlook Allgemeine Java-Themen 8
B Java Mail Client als Outlook ausgeben Allgemeine Java-Themen 2
M Antwort auf Outlook-Besprechungsanfrage per Java senden Allgemeine Java-Themen 5
C FileDrop von Outlook in Java Allgemeine Java-Themen 5
M Java und Outlook Allgemeine Java-Themen 4
F URI Problem bei Parametern fuer Outlook Allgemeine Java-Themen 4
T Tool für Zugriff auf Outlook? Allgemeine Java-Themen 5
P java und outlook Allgemeine Java-Themen 13
G mit Java auf Adressliste von MS Outlook zugreifen. Allgemeine Java-Themen 3
M Java Klasse gesucht / Outlook Adressdaten auslesen Allgemeine Java-Themen 3
E JAVA und Outlook Allgemeine Java-Themen 12
T Jav und Outlook Allgemeine Java-Themen 3
S outlook ähnliche leiste und sonstige packages Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben