Outlook steuern mit Java

Hallo Thomas,

danke erstmal, dass hat schonmal geklappt.

Nun krieg ich aber folgende Fehler


Exception in thread "main" org.eclipse.swt.SWTException: Class ID not found in registry
at org.eclipse.swt.ole.win32.OLE.error(OLE.java:317)
at org.eclipse.swt.ole.win32.OLE.error(OLE.java:283)
at org.eclipse.swt.ole.win32.OleClientSite.<init>(OleClientSite.java:226)
at Outlook.Outlook.main(Outlook.java:38)

Was muss ich tun?


Holger
 
Hallo Thomas,

super das funktioniert,

kannst Du mir vielleicht noch weiterhelfen, wie ich nur die Termine vom aktuellen Datum einlese?


Holger
 
Hallo Zusammen,

Zugriff auf Mails, Kontakte, etc. hab ich dank der eurer guten Anregungen hinbekommen.

Jetzt steh ich aber in einer Sackgasse.

Die HTML Mail die versendet werden soll hat ein eigebettetes Bild :rolleyes: und mir ist schleierhaft wie ich Outlook das beibringen soll.

VG Muppet.
 
Was genau daran ist Dir schleierhaft ? Wenn Du das Bild nicht der Mail anhängen willst, leg es halt auf irgendeinen 'webspace' und lass es von dort abrufen.
HTML:
<html>
<body>
<h3>&Uuml;berschrift der Mail</h3>
<p>Text der Mail</p>
<img src="http://domain.tld/ordner/bild.jpg" width="100" height="100" />
<p>Weiterer Text der Mail</p>
</body>
</html>
 
Auch wenn der Thread uralt ist ... wenigstens macht ihr euch die Mühe und nutzt ihn wenigstens als Sammel-Thread ... *respect*
 
Aloha. :D
ich habe mir vorgenommen, alle Mails (ungelesen und in einem festen Zeitabstand) in eine Datanbank zu exportieren um sie von dort aus weiter verwenden zu können.
Klappt auch alles ganz wunderbar (auch dank diesem Thread hier ;D) - nur das 'ReceivedTime'-Datum will nich so, wie ich will.
Ich bekomm es einfach nur als OLE-Typ 'VT_R4' rüber, was am Ende als float im Java ankommt. Aus der Zahl lässt sich aber kein Datum rückrechnen o.ä. Wie wild rum-konvertieren brachte mich bisher auch zu keinem Ergebnis :(
Hat jm ne Idee? Wär echt kuhl.^^

mfg,
Beni =)
 
Hallo,

Ich grabe diesen Thread mal wieder aus. Im Grunde habe ich auch das selbe Problem wie reichu.

Wenn ich meine Kalenderitems auslese bekomme ich mit toString() Werte wie VT_R4{41272.957}(für heutiges Datum) und mit getDouble() die gleiche Zahl (etwas mehr Nachkommastellen) nur ohne das andere Zeug.

Nunja ich habe nun überhaupt keine Ahnung wie ich mir aus solch einen Wert ein "normales" Datum raushole. Kann man ihn irgendwie umrechnen?

Code:
private static void readCalendar() {
	        Display display = new Display();
	        Shell shell = new Shell(display);
	 
	        shell.setText("Outlook Automation");
	        shell.setLayout(new FillLayout());
	 
	        OleFrame frm = new OleFrame(shell, SWT.NONE);
	        
	 
	        OleClientSite site = new OleClientSite(frm, SWT.NONE,
	                "Outlook.Application");
	        
	        site.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
	 
	        OleAutomation auto = new OleAutomation(site);
	 
	        int[] GetNamespaceDispId = auto
	                .getIDsOfNames(new String[] { "GetNamespace" });
	        Variant mapiNamespace = auto.invoke(GetNamespaceDispId[0],
	                new Variant[] { new Variant("MAPI") });
	 
	        OleAutomation mapiNamespaceAuto = mapiNamespace.getAutomation();
	 
	        int[] DefaultFolderPropertyDispId = mapiNamespaceAuto
	                .getIDsOfNames(new String[] { "GetDefaultFolder" });
	       
	        
	        Variant defaultFolder = mapiNamespaceAuto.invoke(
	                DefaultFolderPropertyDispId[0],
	                new Variant[] { new Variant(9) });
	 
	        OleAutomation defaultFolderAutomation = defaultFolder.getAutomation();
	        
	 
	        int[] ItemsFolderPropertyDispId = defaultFolderAutomation
	                .getIDsOfNames(new String[] { "Items" });
	 
	        Variant items = defaultFolderAutomation
	                .invoke(ItemsFolderPropertyDispId[0]);
	 
	        OleAutomation itemsAutomation = items.getAutomation();
	 
	        int[] ItemsCountPropertyDispId = itemsAutomation
	                .getIDsOfNames(new String[] { "Count" });
	 
	        int[] itemDispId = itemsAutomation
	                .getIDsOfNames(new String[] { "Item" });
	 
	        Variant itemsCount = itemsAutomation
	                .invoke(ItemsCountPropertyDispId[0]);
	        
	        
	        for (int i = 1, cnt = itemsCount.getInt(); i <= cnt; i++) {
	            Variant calendar = itemsAutomation.invoke(itemDispId[0],
	                    new Variant[] { new Variant(i) });
	            OleAutomation calendarAutomation = calendar.getAutomation();
	 
	            
	            int[] CalendarSubjectPropertyDispId = calendarAutomation
	                    .getIDsOfNames(new String[] { "Subject" });
	 
	            Variant calendarSubject = calendarAutomation
	                    .getProperty(CalendarSubjectPropertyDispId[0]);
	            
	            
	            int[] CalendarStartPropertyDispId = calendarAutomation
	            .getIDsOfNames(new String[] { "Start" });
	 
	            Variant calendarStart = calendarAutomation
	                    .getProperty(CalendarStartPropertyDispId[0]);
	            
	            
	            int[] CalendarDurationPropertyDispId = calendarAutomation
	            .getIDsOfNames(new String[] { "Duration" });
	 
	            Variant calendarDuration = calendarAutomation
	                    .getProperty(CalendarDurationPropertyDispId[0]);
	            
	            
	            int[] CalendarEndPropertyDispId = calendarAutomation
	            .getIDsOfNames(new String[] { "End" });
	 
	            Variant calendarEnd = calendarAutomation
	                    .getProperty(CalendarEndPropertyDispId[0]);
	 
	    
	            System.out.println("Appointment: " + calendarSubject.getString()	                    
	                    +" Start: " + calendarStart.getDouble()    
                            +" Start: " + calendarStart.toString()
	                    +" End: " + calendarEnd.getDouble()
	                    +" Duration: " + calendarDuration.getInt());
           	            
	            calendarAutomation.dispose();
}



mfg
igor
 
Moin moin,

ich hab gar keine Ahnung von 'echter' Java-Programmierung, höchstens 'n Bissl jQuery, aber vielleicht kann ich dir einen Gedankenanstoss in eine andere Richtung geben. Vielleicht macht's für die Erfassung von Terminen keinen Sinn, weil Outlook ja Termine nicht unbedingt versendet, aber theoretisch könntest du doch direkt am Server ansetzen und dort die Mails abfangen und verwerten.
Mit PHP lässt dich doch mit recht wenig Aufwand auf Mails zugreifen. Könntest ja mal ausprobieren, was dabei rauskommt, wenn du 'nen Termin versendest und gegebenfalls alle Termine über den Server schicken.

Grüße
 
Zurück