Seite 1 von 1

SendMail mit Outlook / Exchange

Verfasst: 13.08.2010 12:30
von Nafets
Hallo,

ich würde gerne SendMail über Outlook bzw. Exchange Server benutzen.

Geht das überhaupt ?

Danke für Hilfe.

Re: SendMail mit Outlook / Exchange

Verfasst: 13.08.2010 12:37
von Kukulkan
Hallo,

Du kannst auf Outlook über das COM Interface zugreifen. Dazu benutze ich die PureDispHelper extension für PureBasic und dann folgenden Code. Du musst den sicher noch für deine Zwecke anpassen...

Code: Alles auswählen

; generates a new mail in outlook. Multiple attachments in Attachments.s must be devided using pipe (|) char.
Procedure.b CreateOutlookMailStandard(Subject.s, Recipient.s, MessageBody.s, Attachments.s)
  Protected olApp.l, olMsg.l
  Protected FileNo.l, FileList.s, File.s
  
  dhToggleExceptions(#False) ; dont display dispatcher errors
  
  olApp.l = dhCreateObject("Outlook.Application")  ; create new Outlook instance
  
  If olApp.l
    
    olMsg.l = 0 ; init
    
    dhGetValue("%o", @olMsg.l, olApp.l, ".CreateItem(%d)", 0) ; create a new mailitem
    
    ; add header informations
    dhPutValue(olMsg.l, ".Subject = %T", @Subject.s)
    dhPutValue(olMsg.l, ".To = %T", @Recipient.s)
    dhPutValue(olMsg.l, ".Body = %T", @MessageBody.s) 
    
    ; add all attachements (divided using pipe "|" )
    FileNo.l = 1
    FileList.s = ReplaceString(FileList.s, "||", "|") ; ignore empty entry's
    File.s = StringField(FileList.s, FileNo.l, "|")
    While File.s <> ""
      dhCallMethod(olMsg.l, ".Attachments.Add(%s)", @File.s) 
      FileNo.l = FileNo.l + 1
      File.s = StringField(FileList.s, FileNo.l, "|")
    Wend 
    
    ; display and send message
    dhCallMethod(olMsg.l, ".Display") 
    dhCallMethod(olMsg, ".Send") 
    dhCallMethod(olApp, ".Quit") 
    
    ; release outlook objects
    dhReleaseObject(olMsg.l) : olMsg.l = 0 
    dhReleaseObject(olApp.l) : olApp.l = 0 
    
    ProcedureReturn #True
    
  Else 
  
    ProcedureReturn #False
  
  EndIf
EndProcedure
Grüße,

Volker

Re: SendMail mit Outlook / Exchange

Verfasst: 13.08.2010 12:54
von Nafets
Hallo Volker,

danke für schnelle Antwort.

Was ist denn PureDispHelper ?

Danke

Re: SendMail mit Outlook / Exchange

Verfasst: 13.08.2010 13:52
von Kukulkan
Hallo,

Normalerweise bietet PB keine direkte (komfortable) Art um auf COM/ActiveX Schnittstellen zuzugreifen. Aus diesem Grund gibt es den PureDispHelper. Er erlaubt es, die COM Schnittstellen von Windows und anderen Anwendungen (zB MS Office oder auch OpenOffice, AutoCad etc.) recht einfach aufzurufen. Du erkennst diese Methoden am dh am Anfang.

Wenn Du hier im Forum (oder im englischen Forum) danach suchst, findest Du viele Beispiele dazu.

Der offizielle PureDispHelper Thread ist hier: http://www.purebasic.fr/english/viewtopic.php?p=191224 Da kannst Du es auch herunterladen.

Grüße,

Volker

PS. Es gibt noch einen anderen COM Wrapper COMate. Der kann das auch, aber den hab ich noch nie benutzt.

Re: SendMail mit Outlook / Exchange

Verfasst: 13.08.2010 13:58
von Nafets
ok, dann werd ich mich da mal rantasten. Danke.

Re: SendMail mit Outlook / Exchange

Verfasst: 13.08.2010 14:19
von Kiffi
Hier die COMate-Version:

Code: Alles auswählen

IncludePath #PB_Compiler_Home + "srod\comateplus\" ; Pfad anpassen!
XIncludeFile "comateplus.pbi"

Define oOApp.COMateObject
Define oOMail.COMateObject

oOApp = Comate_CreateObject("Outlook.Application")

If oOApp
  
  oOMail = oOApp\GetObjectProperty("CreateItem(0)")
  
  If oOMail
    
    oOMail\SetProperty("To='irgendeine@mailadresse.de'")
    oOMail\SetProperty("Subject='Hello'")
    oOMail\SetProperty("Body='World'")
    oOMail\Invoke("Send")
    
    oOMail\Release()
    
  EndIf 
  
  oOApp\Release()
  
EndIf
Grüße ... Kiffi

Re: SendMail mit Outlook / Exchange

Verfasst: 14.08.2010 14:16
von HemSA
Hallo Nafets,
ich benutze PureDispHelper für Excel.Allerdings klappt das nur noch mit der Version 4.02. Bei den höheren Versionen klappt das nicht mehr.
Das als Info wenn es bei dir womöglich nicht klappen sollte.
Wie das mit Outlook / Exchange ist weiss ich allerdings nicht.

Re: SendMail mit Outlook / Exchange

Verfasst: 17.08.2010 11:56
von Nafets
Hallo zusammen,

obwohl es ein bißchen gedauert hat und ich noch nicht wirklich alles verstehe, funktioniert
die Sache.

Vielen Dank an alle http://forums.purebasic.com/german/post ... 4fd8aacba8#

Re: SendMail mit Outlook / Exchange

Verfasst: 17.08.2010 11:57
von Nafets
PS: eigentlich sollte der da rein :
:praise: