Mail-Lib - E-Mail versenden

Für allgemeine Fragen zur Programmierung mit PureBasic.
Fordey_ra
Beiträge: 71
Registriert: 17.08.2010 22:30

Re: Mail-Lib - E-Mail versenden

Beitrag von Fordey_ra »

Ich nutze das Beispiel aus dem Englischen Forum
Da ich eher Anfänger bitte ich um Nachsicht bei Fehlern.
Mit PureBasic 5.22LTS läuft es bei mir.
Habe allerdings ein paar Befehle gestrichen bzw mit ; rausgenommen weil es sonst nicht lief.

Hoffe kann damit mit auch anderen helfen.

Gruß an alle. :allright:

Wichtig

COMatePLUS.pbi

muss geladen werden

Code: Alles auswählen

Procedure EMail(SmtpServer.s, FromName.s, FromAddress.s, ToAddress.s, Subject.s, BodyHTML.s, AttachFiles.s, CcAddress.s, BccAddress.s, UserName.s, Password.s, IPPort.l, ssl.l, replyto.s, dispositionnotificationTo.s, ReturnreceiptTo.s, Importance.l, Priorite.l, sensitivity.l, transfert.l)
   
   
If OpenWindow(1, 0, 0, 270, 100, "E-mail wird gesendet !", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  TextGadget       (2,  10, 30, 250,  20, "Bitte einen Moment Geduld !", #PB_Text_Center)
  StickyWindow(1,1)
EndIf

  ;========================================================================================
  ;*
  ;*
  ;* Use CDO Object for sending mail with Gmail or any else smtp provider
  ;* Credit and Thanks to Jos http://www.autoitscript.com/forum/index.php?showtopic=23860
  ; who write this script in  Autoit language and that i ported on
  ; Purebasic with the help of SROD with his excellent library COMATE
  ; allow sending secure email, attachments, replY to, notification disposition and more if you want......
   ;And much more configuration
  ;===================================================================================
 
    ;=============================
    ;For the priority
    ;============================
    ;#cdoPriorityNonUrgent= -1  ; Nonurgent priority
    ;#cdoPriorityNormal= 0        ; Normal priority
    ;#cdoPriorityUrgent= 1         ;Urgent priority
    ;===============================
    ;For the importance of the mail
    ;===============================
    ;#cdoLow= 0                    ;Low importance   
    ;#cdoNormal= 1                 ;Normal importance
    ;#cdoHigh= 2                   ;High importance
    ;====================================
    ;For the sensitivity of the mail
    ;=================================
    ;#cdoSensitivityNone= 0   ; None
    ;#cdoPersonal = 1 ; Personal
    ;#cdoPrivate = 2  ; Private
    ;#cdoCompanyConfidential = 3 ; Company Confidential
   
    ;================================================
    ; Beginning of paramters
    ;================================================
  ;SmtpServer.s = "smtp-mail.outlook.com"              ; address for the smtp-server to use - REQUIRED
  ;FromName.s = "Name"                      ; name from who the email was sent
  ;FromAddress.s = EMail.s    ; address from where the mail should come
  ;ToAddress.s = "muster@outlook.de"   ; destination address of the email - REQUIRED
  ;Subject.s = "HTML With attachments"                   ; subject from the email - can be anything you want it to be
  ;Subject.s ="Mustertext"
  ;Body.s = ""
  ;BodyHtml.s="<Body background='cid:Fond4.gif' style='background-attachment: fixed; background-repeat: repeat'>"
  ;BodyHtml = BodyHtml + "Bonjour<BR> Essai<BR><BR><IMG src='cid:medecin.gif' witdh '546' height='100'>"
  ;bodyHtml = ReplaceString(bodyhtml,"'","$0027")           
  ;CcAddress.s = ""       ; address for cc - leave blank if not needed
  ;BccAddress.s = ""     ; address for bcc - leave blank if not needed
  ;Username.s = "muster@outlook.com"                    ; username for the account used from where the mail gets sent - REQUIRED
  ;Password.s = "Password"                  ; password for the account used from where the mail gets sent - REQUIRED
  ;IPPort.l = 25                            ; port used for sending the mail ex 25 for a normal provider 465 for gmail
  ;ssl.l = 1                              ;0 if you don't use ssl and 1 if you use ssl ex from gmail
  ;AttachFiles.s= "" ;listing of attach files you want to send
  ;replyto.s = "muster@hotmail.de"  ;where you want To have the reply of these mail
  ;dispositionnotificationTo.s = "muster@hotmail.de" ;if you want to have a notification
  ;ReturnreceiptTo.s="muster@hotmail.de"  ; where you want to have the receipt  of these mail
  ;Importance.l = #cdoHigh                   ;High importance; Send message priority: "High=2", "Normal"=1, "Low=0"
  ;Priorite.l =  #cdoPriorityUrgent         ;Urgent priority
  ;sensitivity.l = #cdoCompanyConfidential   ; see constants
  ;transfert.l = 0                       ; 0 Ne pas transférer 1 Transfert libre
 
    ;=======================================================
    ; End of paramters
    ;======================================================
    Define.COMateObject objemail,iconf,objbodypart,objbodypart1
   
    objemail = COMate_CreateObject("CDO.Message")
    iConf = COMate_CreateObject("CDO.Configuration")
    If objemail
      objemail\SetProperty("Configuration="+ Str(iconf)+ " as COMateObject"  )
      objemail\SetProperty("MimeFormatted=1" )
      objemail\SetProperty("to='"+ ToAddress +"'")
      objemail\SetProperty("from='"+Chr(34)+ FromName + Chr(34)+  "<" + FromAddress + ">" +"'")
      objemail\SetProperty("Subject='"+Subject+"'")
      objemail\SetProperty(" HTMLBody="+"'"+BodyHTML+"'")
      objemail\SetProperty("replyTo ='"+replyto+"'")
      If CcAddress <> ""
        objemail\SetProperty("Cc ='"+ CcAddress +"'")
      EndIf
      If BccAddress <> ""
        objemail\SetProperty("Bcc ='"+ BccAddress +"'")
      EndIf
      objemail\SetProperty("Configuration\Fields\Item ('http://schemas.microsoft.com/cdo/configuration/sendusing') = 2" )
      objemail\SetProperty("Configuration\Fields\Item ('http://schemas.microsoft.com/cdo/configuration/smtpserver') =" +"'"+ SmtpServer+"'" )
      If IPPort = 0
        IPPort = 25
      EndIf
      objemail\SetProperty("Configuration\Fields\Item ('http://schemas.microsoft.com/cdo/configuration/smtpserverport') ="+ Str(IPPort))
      ;Authenticated SMTP
      If Username <> ""
        objemail\SetProperty("Configuration\Fields\Item ('http://schemas.microsoft.com/cdo/configuration/smtpauthenticate') =1")
        objemail\SetProperty("Configuration\Fields\Item ('http://schemas.microsoft.com/cdo/configuration/sendusername') ="+ "'"+ Username+"'")
        objemail\SetProperty("Configuration\Fields\Item ('http://schemas.microsoft.com/cdo/configuration/sendpassword') =" +"'"+ Password +"'" )
      EndIf
      If ssl
        objemail\SetProperty("Configuration\Fields\Item ('http://schemas.microsoft.com/cdo/configuration/smtpusessl') = 2" )
      EndIf
      ;Connection Timeout in seconds (the maximum time CDO will try to establish a connection to the SMTP server)
      objemail\SetProperty("Configuration\Fields\Item ('http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout') = 60")
      ;==================
      ; sensitivity
      ;================
      Select sensitivity
        Case  #cdoCompanyConfidential
          objemail\SetProperty("Fields\Item('urn:schemas:mailheader:Sensitivity') = "+"'"+ "Company-Confidential"+"'")
        Case #cdoPersonal
          objemail\SetProperty("Fields\Item('urn:schemas:mailheader:Sensitivity') = "+"'"+ "Private"+"'")
        Case  #cdoPrivate
          objemail\SetProperty("Fields\Item('urn:schemas:mailheader:Sensitivity') = "+"'"+ "Personal"+"'")
        Case #cdoSensitivityNone
          objemail\SetProperty("Fields\Item('urn:schemas:mailheader:Sensitivity') = "+"'"+ "None"+"'")
      EndSelect         
     
      Select transfert
        Case 0
          objemail\SetProperty("Fields\Item('urn:schemas:mailheader:X-Message-Flag') = "+"'"+"Nicht weiterleiten"+"'")
        Case 1
          objemail\SetProperty("Fields\Item('urn:schemas:mailheader:X-Message-Flag') = "+"'"+"kostenloser Transfer"+"'")
      EndSelect     
      objemail\invoke("Configuration\Fields\Update")
 
      Select Priorite
        Case     #cdoPriorityUrgent
          objemail\SetProperty("Fields('urn:schemas:mailheader:X-MSMail-Priority') = 'High'")
          objemail\SetProperty("Fields('urn:schemas:mailheader:X-Priority') = " +Str(#cdoPriorityUrgent) )
          objemail\SetProperty("Fields('urn:schemas:mailheader:priority') = " +Str(#cdoPriorityUrgent) )
        Case     #cdoPriorityNormal
          objemail\SetProperty("Fields('urn:schemas:mailheader:X-MSMail-Priority') = 'Normal'")
          objemail\SetProperty("Fields('urn:schemas:mailheader:X-Priority') = "+Str(#cdoPriorityNormal) )
          objemail\SetProperty("Fields('urn:schemas:mailheader:priority') = " +Str(#cdoPriorityNormal) )
        Case     #cdoPriorityNonUrgent
          objemail\SetProperty("Fields('urn:schemas:mailheader:X-MSMail-Priority') = 'Low'")
          objemail\SetProperty("Fields('urn:schemas:mailheader:X-Priority') ="+ Str(#cdoPriorityNonUrgent) )
          objemail\SetProperty("Fields('urn:schemas:mailheader:priority') = " +Str(#cdoPriorityNonUrgent) )
      EndSelect
      Select Importance
        Case #cdoHigh
          objemail\SetProperty("Fields('urn:schemas:httpmail:importance') = " +Str(#cdoHigh) )
        Case #cdoNormal
          objemail\SetProperty("Fields\Item('urn:schemas:httpmail:importance') = " +Str(#cdoNormal) )
        Case #cdoLow
          objemail\SetProperty("Fields('urn:schemas:httpmail:importance') = " +Str(#cdoLow) )
      EndSelect
      objemail\SetProperty("Fields('urn:schemas:mailheader:disposition-notification-to')=" +"'"+dispositionnotificationTo+"'" )
      objemail\SetProperty("Fields('urn:schemas:mailheader:return-receipt-to')="+"'"+ReturnreceiptTo + "'")
      ;Update settings
      objemail\invoke("Fields\Update")
      ;Declaring inline attachments
      ;objbodypart=  objemail\getObjectProperty("AddRelatedBodyPart('C:\Documents and Settings\Administrateur\Bureau\fond4.gif','fond4.gif',1)" )
      ;objbodypart\SetProperty("Fields('urn:schemas:mailheader:Content-ID') ="+"'<fond4.gif>'")
      ;objbodypart\invoke("Fields\Update")
      ;objbodypart1=  objemail\getObjectProperty("AddRelatedBodyPart('C:\Documents and Settings\Administrateur\Bureau\medecin.gif','medecin.gif',1)" )
      ;objbodypart1\SetProperty("Fields('urn:schemas:mailheader:Content-ID') ="+"'<medecin.gif>'")
      ;objbodypart1\invoke("Fields\Update")
      ; Sending attach files
      If AttachFiles.s <> ""
        Resultat.l = CountString(AttachFiles, ";")+1
        For x = 1 To Resultat
          Files2Attach.s=StringField(AttachFiles, x, ";")
          objemail\invoke("AddAttachment (" +"'"+Files2Attach+"'"+")"  )
        Next
      EndIf
      ;objEmail\Setproperty("DSNOptions = 14")
      objemail\invoke("Send")
      objemail\Release()
      If COMate_GetLastErrorDescription()<>"Okay."
        fehler.b=1
      Else
        fehler.b=0
      EndIf 
      iconf\Release()
      ;objbodypart\Release()
      ;objbodypart1\Release()
    Else
      MessageRequester("Fehler beim erstellen der E-Mail", COMate_GetLastErrorDescription())
      Fehler.b=1
    EndIf
    CloseWindow(1)
    UseGadgetList(WindowID(#Kfzeasy))
    ProcedureReturn Fehler.b
  EndProcedure
  
__________________________________________________
Leerzeichen nach Kommata in der Parameterliste einer Prozedur hinzugefügt
15.05.2014
RSBasic
Fordey_ra
Beiträge: 71
Registriert: 17.08.2010 22:30

Re: Mail-Lib - E-Mail versenden

Beitrag von Fordey_ra »

Ein völlig überarbeitetes Programm von TS- Soft findet Ihr hier.

http://www.purebasic.fr/german/viewtopi ... =8&t=25714

Gruß und danke an TS- Soft
Antworten