Outlook und Attachments

Nutzung, Komponenten, .NET

Moderator: Moderatoren

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

Beitrag von Lewi »

Ok, das hatte ich nicht getestet.

Ändere den Code wie folgt:

Code: Alles auswählen

If !empty( cAdress )
    oMail:Recipients:Add( cAdress) 
endif
Gruß, Olaf
Mario Ulbig

Beitrag von Mario Ulbig »

Hallo Olaf,

ist das nicht das gleiche ????


Function MailWithOutlook( cAdress, cSubject, cBody, cAttach)
Local oMail
Local oOutlook
Local oMailItem := NIL

cAdress := IIF( cAdress == NIL,"", cAdress) HIER cSubject := IIF( cBody == NIL ,"", cSubject)
cBody := IIF (cBody == NIL, "", cBody )

oOutlook := CreateObject("Outlook.Application")
IF Empty( oOutlook )
MsgBox( "Outlook nicht installiert" )
RETURN ( NIL )
ENDIF
oMail:= oOutlook:GetNamespace( "MAPI" )
oMail:= oOutlook:CreateItem(0)
oMail:Recipients:Add( cAdress) HIER

Grup Mario[/b]
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

Beitrag von Lewi »

Nein!

Wenn keine Mail-Adresse übergeben wird bzw. der Wert leer ist, dann wird die Methode
oMail:Recipients:Add( cAdress)
nicht aufgerufen.

Die Zeile:
cAdress := IIF( cAdress == NIL,"", cAdress)
stellt nur sicher, dass cAdress nicht den Wert NIL hat.
Mario Ulbig

Beitrag von Mario Ulbig »

Habe ich soweit verstanden, geht aber leider bei mir immer noch nicht.
Du meinst also wenn keine Zuweisung an oMail:Recipients erfolgt,
so sollte sich Outlook öffnen, damit die fehlende Mailadresse eingegeben
werden kann.

Anders gefragt, gibt es eine Methode die Outlook expliziet öffnet.
z.B. open() statt send().
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

Beitrag von Lewi »

Mit "oMail:Display()" wird es sichtbar.
Mario Ulbig

Beitrag von Mario Ulbig »

Danke Olaf,

gerade in diesem Moment habe ich aus einem VB Script den
Befehl gefunden und getestet. Es funktioniert.

Ich bin nun mal einer der gerne mit Büchern arbeitet. Kannst du mir
den eine Quelle nennen wo ich genau solche Dinge nachlesen kann.

Ich habe durch spielen herausgefunden, dass mit dem Aufruf:
oMail:= oOutlook:CreateItem(1)

der Terminplaner aufgeht.

Eine Frage noch zum Schluß. Mit der Methode display() wird je nach der Wahl bei CreateItem Outlook angezeigt. Aber immer mit der Meldung:

Möchten Sie die Änderung speichern Ja / Nein / Abbrechen. Kann mann das durch Parameter abstellen?

Danke Mario
Mario Ulbig

Beitrag von Mario Ulbig »

Es geht auch mit testen.

oMail:display(1)

mit diesem Aufruf kommt keine Meldung mehr und der User kann tun und lassen was er will.


Olaf - vielen Dank für Deine Hilfe. Ich hoffe das auch ich Dir einmal
weiterhelfen kann.

Danke und Grüße aus Forchheim Obf.
Mario
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

Beitrag von Lewi »

Informationen zum Object-Modell von Outlook erhält Du über den VBA Editor.

Ruf dazu den Visual Basic-Editor von Outlook und klicke Menü ? auf Inhalt/Index bzw. Visual Basic Hilfe


Wenn Du im Rahmen der Office-Installation auch VBA installiert hast, befindet sich eine Hilfe-Datei zum Obkect-Modell auf Deinem Rechner. Der Name der Datei ist abhängig von Deiner Office-Version:

Version 2000( 9.0) -> Vbaoutl9.chm
Version 2002 (10.0) ->Vbaol10.chm
Version 2003 (11.0) -> VbaOL11.chm

Gruß, 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:

Beitrag von Muecke »

Hallo zusammen,

weiss jemand wie ich die CC un BCC anhängen kann, damit beim Mail öffnen, die richtige Adresse des empfängers steht(im Feld an).?

Code: Alles auswählen

#include "activex.ch" 
#pragma library( "ascom10.lib" ) 

Function MailWithOutlook( cAdress, cSubject, cBody, cAttach) 

Local oMail 
Local oOutlook 
Local oMailItem := NIL 

   cAdress  := IIF( cAdress == NIL,"", cAdress) 
   cSubject := IIF( cBody  == NIL ,"", cSubject) 
   cBody    := IIF (cBody == NIL, "", cBody ) 

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


   oMail          := oOutlook:CreateItem(0) 
   oMail:Recipients:Add( cAdress) 
  
   oMail:BCC := cBCC
          
   
    oMail:CC := cCC
         
   ENDIF
   oMail:Subject  := cSubject 
   oMail:body     := cBody 
   if ! emty( cAttach ) 
      oMail:Attachments:Add(cAttach) 
   ENDIF 
   oMail:Send() 
   oMail:= NIL 
   oOutLook:quit() 
   oOutlook:destroy() 

Return ( NIL ) 
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

Beitrag von Lewi »

Hi!

Die Parameter "cCC" und "cBCC" solltest Du dannn auch in der Parameterliste anhängen:

Code: Alles auswählen

Function MailWithOutlook( cAdress, cSubject, cBody, cAttach, cCC, cBCC) 
 DEFAULT cCC   to ""
 DEFAULT cBCC  to ""
..

Gruß, 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:

Beitrag von Muecke »

Hallo,


Danke für Info.Mein Code

Code: Alles auswählen

   oMail:= oOutlook:CreateItem(0)
   IF acAdress <> nil
      FOR i:=1 TO len(acAdress )
          oMail:Recipients:Add( acAdress[i] )
      NEXT
   ELSEIF !empt( acBCC )


          oMail:BCC := cBCC


   ELSEIF !empt( acCC )

          oMail:CC := cCC

   ENDIF
Funkt eigentlich alles.Was aber nicht verändert wird, ist die Adresse wenn der Empfänger das mail anschaut.Es wird nicht seine Empfänger Adresse angezeigt sondern einfach eine. Wie kann ich dies Steuern oder ändern?

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

Beitrag von Lewi »

Es werden die Adressen angezeigt, die Du, wie in Deinem Fall über "acAdress" übergibst.

Ich würde an Deiner Stelle eine Adresse unter "AN" angeben, den Rest mittels "BCC". Dann wird im eMail-Client des Empfängers nur der entsprechende "Empfänger" angezeigt.


Gruß, 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:

Beitrag von Muecke »

Hallo Olaf,

Danke für den Typ.

Gruss Thomas
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:

Beitrag von Muecke »

Hallo,

Ich möcht gerne das Mailing abschliesen, aber wie kann ich dies kontr.?

Code: Alles auswählen

oMail:Send() 
oMail:= NIL 
oOutLook:quit() 
oOutlook:destroy() 
Weiss jemand, wie ich dies abfragen kann, solange noch gesendet wird mit Outlook ?
Wenn ich dies nicht abfragen kann, kommt immer die Meldung, es sind noch Daten vorhanden zum senden.Dies möchte ich umgehen.
Das sollte vor

Code: Alles auswählen

oOutLook:quit() 
oOutlook:destroy()
passieren.

Gruss Thomas
Antworten