Seite 1 von 2

Mail Versand per SMTP-Server

Verfasst: 29.07.2021 08:41
von Velindos
Hallo Leute,
wollte ein Mail per Anhang aus dem Programm versenden, geht aber nicht!

Code: Alles auswählen

; ------------------------------------------------------------
InitNetwork()
; ------------------------------------------------------------
; Seien Sie sicher, das richtige Login und Passwort zu verwenden.
; ------------------------------------------------------------
MailTo$             = "info@velindos.com"
; ------------------------------------------------------------
Benutzer$           = "MeinBenutzer@adress.comm"
Login$              = "MyPasswort"
Postausgangsserver$ = "smtp.ausgangsserver.com"
Port                = 587
; ------------------------------------------------------------
; If CreateMail(0, Benutzer$, "Hello") => hier fehlt 
If CreateMail(0, Benutzer$, "Hello",#PB_Ascii)
  ; ------------------------------------------------------------
  SetMailBody(0, "Hello   " + Chr(10) + "This is a mail !")
  ; ------------------------------------------------------------
  AddMailAttachment(0, "MyAnhang", "D:\[Pure@API]\[STORE]\BMP\Arduino ButtonBild.bmp")
  ; ------------------------------------------------------------
  AddMailRecipient(0, MailTo$ , #PB_Mail_To)
  ; ------------------------------------------------------------
  Debug SendMail(0,Postausgangsserver$,Port, #PB_Mail_UseSSL, Benutzer$, Login$)
  ; ------------------------------------------------------------
EndIf
; ------------------------------------------------------------
Repeat
  Debug MailProgress(0)
  Delay(300)
Until MailProgress(0) = -3 Or MailProgress(0) = -2
; ------------------------------------------------------------
Kann jemand mir sagen was ich Falsch mache?

Gruss ... Velindos!

Re: Mail Versand per SMP-Server

Verfasst: 29.07.2021 11:42
von MenschMarkus
Hi,

versuche es erst einmal mit Port 25.
Deine Repeat Schleife dürfte ohne Funktion sein, da Sendmail nicht asynchron läuft. Da fehlt #PB_Mail_Asynchronous

Code: Alles auswählen

  ; ------------------------------------------------------------
  Debug SendMail(0,Postausgangsserver$,Port, #PB_Mail_UseSSL | #PB_Mail_Asynchronous, Benutzer$, Login$)
  ; ------------------------------------------------------------

Re: Mail Versand per SMP-Server

Verfasst: 29.07.2021 12:16
von NicTheQuick
Kein anständiger SMTP-Server nutzt heutzutage noch Port 25, außer vielleicht wenn der Server localhost ist. Der Port ist unverschlüsselt und nicht zur Authentifizierung geeignet.

Ich vermute eher, dass du eigentlich StartTLS statt SSL benötigst, aber Purebasic scheint das nicht anzubieten. Welche Fehlermeldung bekommst du überhaupt? Das hast du leider nicht dazu geschrieben.

Re: Mail Versand per SMP-Server

Verfasst: 29.07.2021 13:00
von Velindos
Hallo Leute,

vorab besten DANK für eure Tips!

Mein Provider "smtp.world4you.com" bietet SMTP:25 und alternativ SMTP-Port(submission) 587 an.

Wenn ich die Sache über *.gmx anspreche verwende ich "mail.gmx.net" und 587!

Beides funzt nicht! Was heisst "StartTLS"?

Gruss ... Velindos!

Re: Mail Versand per SMP-Server

Verfasst: 29.07.2021 14:04
von HeX0R
Versuch mal Port 465

Re: Mail Versand per SMP-Server

Verfasst: 29.07.2021 15:35
von Velindos
Hallo,
habe 465 versucht, funzt nicht! Mal als Baustein!

Code: Alles auswählen

Procedure EmailMessage()
  ; ------------------------------------------------------------
  Protected OutgoingMailId
  ; ------------------------------------------------------------
  If InitNetwork() <> 0
    ; ------------------------------------------------------------
    MailTo.s        "info@velindos.com"
    MailToSubject.s = "PureBasic 5.71 - TLS Authentication Test"
    MailToBody.s    = "Hier mal mit 465 oder 587 testen!"
    ; ------------------------------------------------------------
    Benutzer$           = "MeinBenutzer@adress.comm"
    Login$              = "MyPasswort"
    Port                = 587 ; Old port was 465/ 587
    ServerName.s        = "smtp.ausgangsserver.com"
    ; ------------------------------------------------------------
    If ServerName.s And PortNumber.i And Benutzer$   And Login$  And Benutzer$
      ; 
      If MailTo.s And MailToSubject.s And MailToBody.s
        ; 
        OutgoingMailId.i = CreateMail(#PB_Any, Benutzer$, MailToSubject.s)
        ; 
        If OutgoingMailId.i
          ; 
          SetMailBody(OutgoingMailId.i, MailToBody.s)
          ; 
          AddMailAttachment(OutgoingMailId, "MyAnhang", "D:\[Pure@API]\[STORE]\BMP\Arduino ButtonBild.bmp")
          
          AddMailRecipient(OutgoingMailId.i, MailTo.s, #PB_Mail_To)
          ; 
          If SendMail(OutgoingMailId.i, ServerName.s, PortNumber.i, #PB_Mail_Asynchronous | #PB_Mail_UseSSL, Benutzer$  , Login$)
            ; 
            Repeat
              ProgressId.i = MailProgress(OutgoingMailId.i)
              If ProgressId.i = #PB_Mail_Connected
                Debug "Mit dem E-Mail-Server verbunden."
              ElseIf ProgressId.i = #PB_Mail_Error
                ErrorCounter.i + 1
                Debug "Fehler beim Verbinden und Senden der Nachricht."
              Else
                Debug "Sent " + Str(ProgressId.i) + " bytes of this email."
              EndIf
              Delay(300)
            Until ProgressId.i = #PB_Mail_Finished Or Progress.i = #PB_Mail_Error Or ErrorCounter.i = 20
            ; 
            If ProgressId.i = #PB_Mail_Finished
              Debug "E-Mail Paket korrekt gesendet."
            ElseIf ProgressId.i = #PB_Mail_Error
              Debug "Das E-Mail-Paket konnte nicht gesendet werden."
            EndIf
            ; 
          Else
            Debug "Das Postpaket konnte nicht gesendet werden."
          EndIf
          ; 
        Else
          Debug "Das ausgehende E-Mail-Paket kann nicht erstellt werden."
        EndIf
        ; 
      Else
        Debug "Eine oder mehrere Angaben des Empfängers sind leer."
      EndIf
      ; 
    Else
      Debug "Eine oder mehrere der E-Mail-Server-Details sind leer."
    EndIf
    ; 
  Else
    Debug "Die Netzwerkumgebung zum Senden von E-Mails kann nicht initialisiert werden"
  EndIf
  ; ------------------------------------------------------------
EndProcedure

EmailMessage()
Gruss ... Velindos!

Re: Mail Versand per SMP-Server

Verfasst: 29.07.2021 15:51
von NicTheQuick
StartTLS wird sehr häufig bei SMTP-Servern genutzt. Es bedeutet, dass die Verbindung zuerst unverschlüsselt beginnt, und dann einigen sich beide Seiten darauf auf Verschlüsselung umzustellen, bevor die Logindaten übertragen werden. Bei SSL/TLS ist die Verbindung schon von Beginn an verschlüsselt. Das nutzen aber die wenigsten Mailserver meiner Erfahrung nach. Bei IMAP wird hingegen eigentlich immer SSL/TLS benutzt, da hab ich auch noch kein StartTLS gesehen.
Ich fürchte Purebasic hat einfach mal wieder zu wenige Optionen, wie es oft der Fall ist.

Re: Mail Versand per SMP-Server

Verfasst: 29.07.2021 16:05
von Velindos
Hallo NicTheQuick!

Wenn ich das richtig Verstehe kann damit PB keine Verbindung erstellen!
Sieht ja auch so aus im Baustein!

Mit welchen Maildienst kann man eine Verbindung erstellen?

Also ich habe es versucht mit GMX, World4you, Gmail etc.!

Hatte bis Dato keinen Erfolg!

Gruss ... Velindos!

Re: Mail Versand per SMTP-Server

Verfasst: 30.07.2021 21:20
von HeX0R
Ich hab das Beispiel in der Hilfe mal eben getestet (#PB_Mail_UseSSL eingefügt und Username/Passwort).
Sowohl GMX, als auch GMail funktionieren wunderbar, mit Port 465 allerdings, nicht mit 587.
World4you kenne ich nicht, interessiert mich auch nicht.


Bei Gmail musst Du natürlich die 2-Phasen Authorisierung deaktivieren, oder Du nutzt eins der sog. "App-Passwörtern".

Re: Mail Versand per SMTP-Server

Verfasst: 31.07.2021 12:28
von mk-soft
Mit vergessen bei GoogleMail Online auch andere Programme zu erlauben.
Nicht zertifizierte Programme werden abgelehnt.