tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
835
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    rongricker rongricker ist offline Grünschnabel
    Registriert seit
    Jul 2010
    Beiträge
    1
    Hallo,
    ich habe ein dringendes Problem:
    Über meine Java-Applikation (mithilfe von SWT) sollen in Outlook Aufgaben erstellt UND versendet werden! Das erstellen und speichern der Aufgaben funktioniert, aber leider schaffe ich es nicht diese auch zu versenden Alle Properties werden erfolgreich gespeichert, aber wenn ich mir die aus Java generierte Aufgabe in meinem Outlook Postfach anschaue, ist das "An:" -Feld immer leer und die Aufgabe wird nicht versendet.... Das Versenden einfacher Mails klappt übrigens.

    Das Problem muss irgendwie beim setzen des Recipients-Properties liegen... im Beispiel unten versuche ich es mit einem Variant-Array... in anderen Versuchen mit einem einfachen Variant-Objekt funktionierte es auch nicht.

    hier der Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    
    public void swtTest() {
                    
            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" );
            OleAutomation auto = new OleAutomation( site );
            int[] GetNamespaceDispId = auto.getIDsOfNames( new String[] { "GetNamespace" } );
            Variant Namespace = auto.invoke(GetNamespaceDispId[0],  new Variant[] { new Variant( "MAPI" ) } );
            OleAutomation NamespaceAutomation = Namespace.getAutomation();
            int[] LogonDispId = NamespaceAutomation.getIDsOfNames( new String[] { "Logon" } );
            NamespaceAutomation.invoke(LogonDispId[0], new Variant[] { new Variant( "XXX@XXX.de" ), 
                                                                       new Variant( "XXX" ),
                                                                       new Variant( true ), 
                                                                       new Variant( true ) });
     
            
            int[] createItemDispId = auto.getIDsOfNames( new String[] { "CreateItem" } );
            Variant task = auto.invoke( createItemDispId[0], new Variant[] { new Variant( JConstant.OUTLOOK_TASK_ITEM ) } );
            OleAutomation taskAutomation = task.getAutomation();
            
            int[] delegatorPropertyDispId = taskAutomation.getIDsOfNames( new String[] { "Delegator" } );
            taskAutomation.setProperty( delegatorPropertyDispId[0], new Variant( "absender@test.de" ) );
            
            int[] subjectPropertyDispId = taskAutomation.getIDsOfNames( new String[] { "Subject" } );
            taskAutomation.setProperty( subjectPropertyDispId[0], new Variant( "Dies ist der Betreff" ) );
     
            int[] BodyPropertyDispId = taskAutomation.getIDsOfNames( new String[] { "Body" } );
            taskAutomation.setProperty( BodyPropertyDispId[0], new Variant( "Hier steht der Inhalt der Aufgabe...") );
            
            int[] assignDispId = taskAutomation.getIDsOfNames( new String[] { "Assign" } );
            taskAutomation.invoke( assignDispId[0] );
            
            int[] recipientsPropertyDispId = taskAutomation.getIDsOfNames( new String[] { "Recipients" } );
            taskAutomation.setProperty( recipientsPropertyDispId[0], new Variant[]{ new Variant( "empfaenger@test.de" ) } );
            
            int[] saveDispId = taskAutomation.getIDsOfNames( new String[] { "Save" } );
            taskAutomation.invoke( saveDispId[0] );
            
            int[] sendDispId = taskAutomation.getIDsOfNames( new String[] { "Send" } );
            taskAutomation.invoke( sendDispId[0] );
            
            int[] LogoffDispId = NamespaceAutomation.getIDsOfNames( new String[] { "Logoff" } );
            NamespaceAutomation.invoke( LogoffDispId[0] );
            shell.dispose();
            auto.dispose();
            NamespaceAutomation.dispose();
            taskAutomation.dispose();
            site.deactivateInPlaceClient();
            site.dispose();
            frm.dispose();
        }

    hier die Office Outlook 2003 VBA Language Reference zum TaskItem Objekt:
    http://msdn.microsoft.com/en-us/libr...ffice.11).aspx
    ich nutze zwar Outlook 2000 aber das sollte nicht das Problem sein....

    Ich bin für jeden Hinweis der mir irgendwie weiterhelfen könnte überaus dankbar.. ich verzweifle jetzt schon seit 2 Tagen an dem Problem
     

  2. #2
    SnuSnuMe SnuSnuMe ist offline Grünschnabel
    Registriert seit
    Jan 2011
    Beiträge
    4
    So, jetzt sind wir schon zwei die nach einer Lösung suchen Aber wenigstens treibt sich hier im Forum ein Admin (Thomas Darimont) herum der sich mit Java und OLE Outlook auskennt.

    Habe selbiges Problem, aber bisher noch keine Lösung gefunden. Möchte per Outlook eine Aufgabe versenden aber leider keinen Empfänger eintragen. Das Internet gibt leider nichts her. In anderen Programmiersprachen gibt es eine Art "Add" Befehl um die Empfänger einzufügen, ist aber mit Java wohl nicht ohne weiteres Möglich.

    Hoffe wir kommen noch auf eine Lösung ohne andere Programmiersprache
    gruß Snu
     

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    habe leider kein Outlook 2000 zur Hand... reicht auch eine Lösung für Outlook 2003?

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  4. #4
    SnuSnuMe SnuSnuMe ist offline Grünschnabel
    Registriert seit
    Jan 2011
    Beiträge
    4
    Hallo Tom,
    da ich Outlook 2010 benutze und bisher auch alles wie mit 2000 oder 2003 geklappt hat, wäre ich dir auch für eine 2003 Lösung dankbar Ideal wär natürlich auch 2010

    Schonmal vielen Dank im vorraus, gruß Roman
     

  5. #5
    SnuSnuMe SnuSnuMe ist offline Grünschnabel
    Registriert seit
    Jan 2011
    Beiträge
    4
    Habe jetzt schon echt alles durch, in anderen Programmiersprachen geht es wohl irgendwie einfacher
     

  6. #6
    SnuSnuMe SnuSnuMe ist offline Grünschnabel
    Registriert seit
    Jan 2011
    Beiträge
    4
    Ich habe die Lösung auf unser Problem und es ist einfacher als man denkt Hab den Wald vor lauter Bäume nicht gesehn ...

    Man legt sich einfach ne neue OleAutomation an mit den Recipients und invoked den Befehl "Add" mit einem String:

    OleAutomation res = getProperty(task, "Recipients");
    invoke(res, "Add", To);

    Hier noch meine Methoden für das get/set/invoke (ist im Endeffekt genau wie deins, blos übersichtlicher gestaltet)

    private static OleAutomation getProperty(OleAutomation auto, String name) {
    Variant varResult = auto.getProperty(property(auto, name));
    if (varResult != null && varResult.getType() != OLE.VT_EMPTY) {
    OleAutomation result = varResult.getAutomation();
    varResult.dispose();
    return result;
    }
    return null;
    }

    private static Variant invoke(OleAutomation auto, String command, String value) {
    return auto.invoke(property(auto, command), new Variant[]{new Variant(value)});
    }

    private static Variant invoke(OleAutomation auto, String command) {
    return auto.invoke(property(auto, command));
    }

    private static Variant invoke(OleAutomation auto, String command, int value) {
    return auto.invoke(property(auto, command), new Variant[]{new Variant(value)});
    }

    private static boolean setProperty(OleAutomation auto, String name, String value) {
    return auto.setProperty(property(auto, name), new Variant(value));
    }

    private static boolean setProperty(OleAutomation auto, String name, int value) {
    return auto.setProperty(property(auto, name), new Variant(value));
    }

    private static int property(OleAutomation auto, String name) {
    return auto.getIDsOfNames(new String[]{name})[0];
    }

    Jetzt hab ich nur noch das Problem das mir die "Aufgabe" nicht in den Modus fürs Versenden an andere geht. Beim Task klappt das mit einem "Assign".

    gruß Roman
     

Ähnliche Themen

  1. Outlook 2000 .msg Datei in Outlook 2003 öffnen
    Von erax im Forum Office-Anwendungen
    Antworten: 0
    Letzter Beitrag: 08.10.08, 08:39
  2. Antworten: 0
    Letzter Beitrag: 12.09.05, 18:00
  3. Outlook Aufgabe exportieren
    Von Franz im Forum Office-Anwendungen
    Antworten: 4
    Letzter Beitrag: 17.03.05, 11:21
  4. Outlook 2000 Versenden von Anhängen als Verknüpfung
    Von braund im Forum Office-Anwendungen
    Antworten: 13
    Letzter Beitrag: 10.02.05, 13:00
  5. Antworten: 3
    Letzter Beitrag: 01.03.04, 14:26

Stichworte