Discussion:
von java aus auf emils in Outlook Ordner zugreifen
(zu alt für eine Antwort)
Matthias Hoffmann
2003-12-01 12:20:43 UTC
Permalink
Hallo,
mein Programm soll auf Emails zugreifen die in einem bestimmten Ordner
unter Outlook liegen. Ich möchte diese Mails öffnen - hineinschauen -
und je nachdem was drin steht aus Outlook löschen und den text an
einer anderen stelle (z.B. c:/mails ) speichern.

wie kann ich das den von java aus machen ? - und JavaMail ist keine
Hilfe !! da ich keinen Zugriff auf den Server bekomme - aber auf
allen Rechnern ist Outlook installiert.

Ich hoffe echt das da jemand Ahnung hat.

Gruß
Christoph Mohr
2003-12-01 12:32:14 UTC
Permalink
Hi,
Post by Matthias Hoffmann
Hallo,
mein Programm soll auf Emails zugreifen die in einem bestimmten Ordner
unter Outlook liegen. Ich möchte diese Mails öffnen - hineinschauen -
und je nachdem was drin steht aus Outlook löschen und den text an
einer anderen stelle (z.B. c:/mails ) speichern.
so recht hab ich zwar auch noch keine Ahnung, aber angeblich sollte es
mit Jacob gehen:
http://danadler.com/jacob/

Aber irgendwie ist das letzte Release vom September 2001...


Gruß

Christoph
Stefan Matthias Aust
2003-12-01 12:36:17 UTC
Permalink
Post by Matthias Hoffmann
mein Programm soll auf Emails zugreifen die in einem bestimmten Ordner
unter Outlook liegen. Ich möchte diese Mails öffnen - hineinschauen -
und je nachdem was drin steht aus Outlook löschen und den text an
einer anderen stelle (z.B. c:/mails ) speichern.
Ich gehe mal davon aus, das nicht *du* das möchtest, sondern das
Programm, was du schreiben willst, soll es automatisch machen.
Ansonsten würde ich nämlich einfach sagen: Mach es doch.

Outlook hat ein Objektmodell, zu dem man leicht die Dokumentation
findet, wenn man bei google mal "outlook object model msdn" eingibt. So
findet man etwa http://www.microsoft.com/mind/0597/outlook.asp als
Einstieg unter den ersten 5 Treffern. Mache dich mit den Möglichkeiten
dieses Objektmodells vertraut.

Ohne das jetzt näher studiert zu haben, bin ich mir recht sicher, dass
du deine Aufgabe ganz ohne Java direkt in VBA innerhalb von Outlook
lösen könntest. Falls das ganze als Teil einer größeren Java-Anwendung
gedacht ist, kannst du auf das Objektmodell mittels OLE-Automatation
auch von Java aus zugreifen - du brauchst nur eine passende Bibliothek,
etwa Jacob oder SWT. Und natürlich eine Ahnung davon, was
OLE-Automatation überhaupt ist :)


bye
--
Stefan Matthias Aust // "Ist es normal, nur weil alle es tun?" -F4
Rudolf Ziegaus
2003-12-01 16:06:59 UTC
Permalink
Post by Stefan Matthias Aust
Ohne das jetzt näher studiert zu haben, bin ich mir recht sicher, dass
du deine Aufgabe ganz ohne Java direkt in VBA innerhalb von Outlook
lösen könntest. Falls das ganze als Teil einer größeren Java-Anwendung
gedacht ist, kannst du auf das Objektmodell mittels OLE-Automatation
auch von Java aus zugreifen - du brauchst nur eine passende Bibliothek,
etwa Jacob oder SWT. Und natürlich eine Ahnung davon, was
OLE-Automatation überhaupt ist :)
Also von JACOB kann ich in Verbindung mit Outlook nur abraten. Ich habe
schon einige Beiträge gesehen, in denen von mysteriösen Abstürzen die Rede
ist. Bei mir hat es aber gut geklappt und dachte, dass das nicht so schlimm
sei - bis meine User reihenweise ebenfalls die gleichen mysteriösen Abstürze
hatten und ich nix dagegen tun konnte.

Das Ganze passiert in Verbindung mit Outlook. Bzgl. Excel z. B. habe ich
dergleichen noch nicht gehört.


Ich selbst habe mir eine entsprechende DLL geschrieben, die den Zugriff auf
Outlook regelt (nur Mail versenden) und jetzt scheint's zu funktionieren.
Ich kann aber auch hier sagen, dass der Aufwand doch einigermaßen
beträchtlich ist, da man das Objektmodell kennen muss, eine Ahnung von COM
bzw. OLE-Automation benötigt, einen C/C++-Compiler braucht man auch und last
but not least sollte man sich mit JNI auskennen oder zumindest bereit sein,
sich damit auseinander zu setzen.
Wenn man es nur so mal "ganz kurz" braucht, ist der Aufwand dafür sicherlich
zu hoch.


Ciao,

Rudi
Matthias Hoffmann
2003-12-02 08:43:40 UTC
Permalink
Post by Stefan Matthias Aust
Post by Matthias Hoffmann
mein Programm soll auf Emails zugreifen die in einem bestimmten Ordner
unter Outlook liegen. Ich möchte diese Mails öffnen - hineinschauen -
und je nachdem was drin steht aus Outlook löschen und den text an
einer anderen stelle (z.B. c:/mails ) speichern.
Ich gehe mal davon aus, das nicht *du* das möchtest, sondern das
Programm, was du schreiben willst, soll es automatisch machen.
Ansonsten würde ich nämlich einfach sagen: Mach es doch.
Outlook hat ein Objektmodell, zu dem man leicht die Dokumentation
findet, wenn man bei google mal "outlook object model msdn" eingibt. So
findet man etwa http://www.microsoft.com/mind/0597/outlook.asp als
Einstieg unter den ersten 5 Treffern. Mache dich mit den Möglichkeiten
dieses Objektmodells vertraut.
Ohne das jetzt näher studiert zu haben, bin ich mir recht sicher, dass
du deine Aufgabe ganz ohne Java direkt in VBA innerhalb von Outlook
lösen könntest. Falls das ganze als Teil einer größeren Java-Anwendung
gedacht ist, kannst du auf das Objektmodell mittels OLE-Automatation
auch von Java aus zugreifen - du brauchst nur eine passende Bibliothek,
etwa Jacob oder SWT. Und natürlich eine Ahnung davon, was
OLE-Automatation überhaupt ist :)
bye
also mit Visual Basic oder Wicrosoft Scripting Host ist es echt kein
Problem - selbst wenn man sich nicht damit auskennt dauert es ca 30
Minuten bis das fertig ist - wenn man sich alldings auskennt dauert es
eher 10 Minuten.
Aber du hattest recht es ist Teil einer größeren Anwendung, mit der VB
dann wirklich überfordert ist.
Ich würde also die OLE-Automatation benutzen aber nicht unter VB -
sondern eben unter Java - wo finde ich den da eine Doku. (etwa über
SWT) ?
Nico Seessle
2003-12-02 09:55:53 UTC
Permalink
Post by Matthias Hoffmann
Ich würde also die OLE-Automatation benutzen aber nicht unter VB -
sondern eben unter Java - wo finde ich den da eine Doku. (etwa über
SWT) ?
Da wo man SWT findet:
http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/main.html

Evtl. findest du auch dort was: http://eclipsewiki.swiki.net/2 (Die
Seite ist nur gerade nicht erreichbar :-()

Wenn du für deine Anwendung ansonsten Swing benutzt könntest du auch
einen Blick auf COM-Wrapper werfen die nicht von SWT abhängig sind.
Empfehlen könnte ich das z.B. JacoZoom (www.infozoom.de). Das ist zwar
kommerziell, funktioniert aber "problemlos" (so problemlos wie irgendwas
was Windows-Technologien nutzt eben funktionieren kann :-)) und liefert
auch noch einen Code-Generator mit, der dir aus einer Typelib
entsprechende Java-Stubs generiert, so das du grundlegend schon einmal
mit Java-Klassen arbeiten kannst.

Auf eine Mail zugreifen sieht dann z.B. so aus:

try
{
_Application outlook = new Application();
_NameSpace namespace = outlook.getNamespace("MAPI");

MAPIFolder f =
namespace.getDefaultFolder(OlDefaultFolders.olFolderDrafts);
_Folders mf = f.getFolders();
MAPIFolder entwurf = mf.getFirst();

System.out.println(entwurf.getName());

_Items items = entwurf.getItems();
comboInhalt = new String[items.getCount()];
mailBody = new String[items.getCount()];
for (int i = 0; i < items.getCount(); i++)
{
MailItem nM =
MailItem.getMailItemFromUnknown(items.item(new Variant(i+1)));

comboInhalt[i]= nM.getSubject();
mailBody[i] = nM.getBody();
System.out.println(""+i +"-->" + nM.getSubject());
}
}
catch(ComJniException ee)
{
ee.printStackTrace();
}

(Den Code habe nicht ich geschrieben...)

Nico

Ortwin Glück
2003-12-01 14:06:25 UTC
Permalink
Post by Matthias Hoffmann
mein Programm soll auf Emails zugreifen die in einem bestimmten Ordner
unter Outlook liegen. Ich möchte diese Mails öffnen - hineinschauen -
und je nachdem was drin steht aus Outlook löschen und den text an
einer anderen stelle (z.B. c:/mails ) speichern.
Das hat mit Outlook nichts zu tun oder?
Die Emails liegen doch auf einem IMAP-Server (wenn's Exchange ist dann
vergiss das ganze lieber...). Darauf kannst du mit Javamail zugreifen.

Odi
Ronny Schuetz
2003-12-01 16:10:42 UTC
Permalink
Post by Ortwin Glück
Die Emails liegen doch auf einem IMAP-Server (wenn's Exchange ist dann
vergiss das ganze lieber...). Darauf kannst du mit Javamail zugreifen.
Exchange hat auch IMAP und POP3 Interfaces, die könnten aber
abgeschaltet sein.
Loading...