Mail Versand per SMTP-Server

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Mail Versand per SMTP-Server

Beitrag 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!
Zuletzt geändert von Velindos am 01.08.2021 12:37, insgesamt 1-mal geändert.
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
MenschMarkus
Beiträge: 220
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Mail Versand per SMP-Server

Beitrag 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$)
  ; ------------------------------------------------------------
Wissen schadet nur dem, der es nicht hat !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Mail Versand per SMP-Server

Beitrag 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.
Bild
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Mail Versand per SMP-Server

Beitrag 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!
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: Mail Versand per SMP-Server

Beitrag von HeX0R »

Versuch mal Port 465
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Mail Versand per SMP-Server

Beitrag 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!
Zuletzt geändert von Velindos am 29.07.2021 15:55, insgesamt 1-mal geändert.
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Mail Versand per SMP-Server

Beitrag 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.
Bild
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Mail Versand per SMP-Server

Beitrag 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!
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: Mail Versand per SMTP-Server

Beitrag 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".
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Mail Versand per SMTP-Server

Beitrag von mk-soft »

Mit vergessen bei GoogleMail Online auch andere Programme zu erlauben.
Nicht zertifizierte Programme werden abgelehnt.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten