SendMail mit Outlook / Exchange

Anfängerfragen zum Programmieren mit PureBasic.
Nafets
Beiträge: 19
Registriert: 09.02.2005 21:01

SendMail mit Outlook / Exchange

Beitrag von Nafets »

Hallo,

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

Geht das überhaupt ?

Danke für Hilfe.
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Re: SendMail mit Outlook / Exchange

Beitrag 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
Nafets
Beiträge: 19
Registriert: 09.02.2005 21:01

Re: SendMail mit Outlook / Exchange

Beitrag von Nafets »

Hallo Volker,

danke für schnelle Antwort.

Was ist denn PureDispHelper ?

Danke
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Re: SendMail mit Outlook / Exchange

Beitrag 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.
Nafets
Beiträge: 19
Registriert: 09.02.2005 21:01

Re: SendMail mit Outlook / Exchange

Beitrag von Nafets »

ok, dann werd ich mich da mal rantasten. Danke.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: SendMail mit Outlook / Exchange

Beitrag 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
a²+b²=mc²
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Re: SendMail mit Outlook / Exchange

Beitrag 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.
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Nafets
Beiträge: 19
Registriert: 09.02.2005 21:01

Re: SendMail mit Outlook / Exchange

Beitrag 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#
Nafets
Beiträge: 19
Registriert: 09.02.2005 21:01

Re: SendMail mit Outlook / Exchange

Beitrag von Nafets »

PS: eigentlich sollte der da rein :
:praise:
Antworten