Mail mit Outlook versenden

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Mail mit Outlook versenden

Beitrag von Lewi »

Ich stehe mit einer Fehlermedlung auf dem Schlau. Ich möchte, dass der Anwender Outlook aus meiner Anwendung aufrufen kann, wobei eine Mailadresse und ein Anhang übergeben wird.

Der Code sieht wie folgt aus:

Code: Alles auswählen

Function OutlookMail( cAdress, cAttach1)
   Local oOTL
   Local oMail

   oOTL := CreateObject("Outlook.Application")
   IF Empty( oOTL )
     MsgBox( "Outlook nicht installiert" )
     RETURN ( NIL )
   ENDIF

   oMail          := oOTL:CreateItem(0)
   oMail:Recipients:Add( cAdress)

   if ! empty( cAttach1 )
      oMail:Attachments:Add(cAttach1)
   ENDIF
   oMail:Display(1)
   oOTL:Destroy()
Return ( NIL )
Wenn der Anwender die Mail nun nicht abschickt, dann meldet xBase einen Fehler bei oMail:Display() mit "unbekannter Funktion", wird die Mail abgeschickt, dann erscheint dier Fehlermeldung nicht.

Wieso erscheint diese Fehlermeldung und wie kann man das Problem umgehen?

Viele Grüße
Olaf
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: Mail mit Outlook versenden

Beitrag von Muecke »

Olaf,

ich hab in der der Hilfe display(), nur unter AppointmentItem object gefunden.
Hat dies zur Folge, dass die Meldung
oMail:Display() mit "unbekannter Funktion"
erhälst ?
Ich hab auch den gleichen Fehler, wenn ich den Dialog schliesse!!
Kann man diesen event vielleicht abfangen?

Ich hab dies mit Outlook nicht mehr im Betrieb, da ich immer die Meldung bekomme, ob ich Outlook benutzen darf oder nicht.
Hast du dies im Griff mit der Meldung?


Gruss Thomas
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Mail mit Outlook versenden

Beitrag von brandelh »

Hi,

mir stellt sich die Frage, wo du dich entschließt, den Versand zu blockieren, aber ich denke mal, dass wenn

Code: Alles auswählen

 oMail:Display(1)
die Fehlermeldung "unbekannte Funktion" meldet, dann hat das Objekt diese (oMail) Funktion nicht.
Da diese im oMail Objekt normalerweise enthalten ist, schließe ich daraus, dass bei einem Abbruch kein
richtiges Mail-Objekt vorliegt.

Ist oMail in diesen Fällen etwa NIL oder empty() ?
In den Xbase++ Klassen gibt es die Funktion IsMethod(), kann man hier eventuell abfragen ob oMail:IsMethod("Display") existiert ?
Wenn die Meldung von Xbase++ kommt, könnte man eventuell mit BEGIN SEQUENCE / END SEQUENCE etwas erreichen ?
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Mail mit Outlook versenden

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: mir stellt sich die Frage, wo du dich entschließt, den Versand zu blockieren, aber ich denke mal, dass wenn

Code: Alles auswählen

 oMail:Display(1)
die Fehlermeldung "unbekannte Funktion" meldet, dann hat das Objekt diese (oMail) Funktion nicht.
Da diese im oMail Objekt normalerweise enthalten ist, schließe ich daraus, dass bei einem Abbruch kein
richtiges Mail-Objekt vorliegt.

Ist oMail in diesen Fällen etwa NIL oder empty() ?
In den Xbase++ Klassen gibt es die Funktion IsMethod(), kann man hier eventuell abfragen ob oMail:IsMethod("Display") existiert ?
Wenn die Meldung von Xbase++ kommt, könnte man eventuell mit BEGIN SEQUENCE / END SEQUENCE etwas erreichen ?
Yup das würde ich auch sagen.

allerdings fällt mir am Code auf das die Property und Methoden des activeX "inline" verwendet
werden was ich für problematisch halte.

Ich würde sogar noch ein Schritt weiter gehen eine eigene Class mit der Methode :Display
schreiben so wie es uns Alaska mit C:\Alaska\XPPW32\source\SYS\axctrls.prg vormacht.

Damit bekommt man dann auch die Events in Griff und kann damit sicherlich die letzte User
Eingabe abfangen und auswerten.

Leider wird diese "Taktik" fast ein MUSS da sich IMHO seit der v345 das "timeing" und Error
Verhalten von activeX "verändert" hat. Besonders wenn das activeX selbst ständig Events
"fired" oder die Grafik Karten mit der "Ausgabe" nicht hinterher kommt ... wenn man da nicht
sowas wie ein NET_USE() hat und "timeout" berücksichtigt ...

das Resultat ist dann die ErrorMsg das die Methode nicht bekannt sei ... aber 1sec. später ...
leider ist das kaum zu debuggen und triit dann nicht auf unter VX20.EXE, aber zumindest rettet
mich VX vor einem reset wenn der OLE-Server mal wieder hängt und alles lahm legt.

Nachtrag : irgendwie erinnert mich das a SOCmapi.DLL ... deshalb hab ich da eine extra Thread laufen ...
gruss by OHR
Jimmy
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: Mail mit Outlook versenden

Beitrag von Muecke »

Ich hab dies schon abgefragt mit
IsMethod()
und bekam .f. zurück.
Warum öffnet dann das Fenster des Email Programms? #-o

Wenn das Email Programm offen ist, dan ist es auch nicht mehr möglich, mit einem anderem Programm weiter zu arbeiten,bis es geschlossen wird.
Den Typ von Jimmy display in einem sep.Thread laufen zu lassen ist gar nicht so schlecht.

Gruss Thomas
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Mail mit Outlook versenden

Beitrag von Lewi »

Laut Objekt-Inspektor ist Display() eine Methode des Objektes "MailItem".
Wenn oMail:Display() im Code eleminiert wird, dann erscheint auch kein Outlook-Fenster, mit dem die Mail bearbeitet werden kann. Warum der beschriebene Fehler erst dann auftritt, wenn die Mail nicht abgeschickt wird, erschließt sich mir nicht wirklich.
Antworten