Anfängerfragen zum Programmieren mit PureBasic.
Velindos
Beiträge: 598 Registriert: 15.11.2010 10:56
Beitrag
von Velindos » 29.07.2021 08:41
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
Beitrag
von MenschMarkus » 29.07.2021 11:42
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 !
NicTheQuick
Ein Admin
Beiträge: 8679 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:
Beitrag
von NicTheQuick » 29.07.2021 12:16
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.
Velindos
Beiträge: 598 Registriert: 15.11.2010 10:56
Beitrag
von Velindos » 29.07.2021 13:00
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)
HeX0R
Beiträge: 2959 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:
Beitrag
von HeX0R » 29.07.2021 14:04
Versuch mal Port 465
Velindos
Beiträge: 598 Registriert: 15.11.2010 10:56
Beitrag
von Velindos » 29.07.2021 15:35
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)
NicTheQuick
Ein Admin
Beiträge: 8679 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:
Beitrag
von NicTheQuick » 29.07.2021 15:51
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.
Velindos
Beiträge: 598 Registriert: 15.11.2010 10:56
Beitrag
von Velindos » 29.07.2021 16:05
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)
HeX0R
Beiträge: 2959 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:
Beitrag
von HeX0R » 30.07.2021 21:20
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 ".
mk-soft
Beiträge: 3700 Registriert: 24.11.2004 13:12
Wohnort: Germany
Beitrag
von mk-soft » 31.07.2021 12:28
Mit vergessen bei GoogleMail Online auch andere Programme zu erlauben.
Nicht zertifizierte Programme werden abgelehnt.