Ich will meinen Kunden ja jetzt auch die Möglichkeit geben, Massenmails zu versenden. Hatte noch eine See4XB von 2009 im Einsatz. Habe jetzt auf die aktuelle Version upgegradet, da sich ja mittlerweile einige Dinge bei den SMTP-Server-Standards geändert haben (z.B. SSL).
Habe auch manuell (nach dem Herunterladen von STUNNEL über die Marshallsoft-Webseite) die neueste Stunnel-Version (5.17) nachinstalliert - ohne Erfolg.
Von den STUNNEL-Dateien habe ich nur die in mein Programmverzeichnis (und somit auffindbar) übernommen, die auch in der Readme von Marshallsoft erwähnt werden (obwohl es noch wesentlich mehr Dateien im STUNNEL-Verzeichnis gibt) - und zwar nur die folgenden:
Wobei ich die von Marshallsoft mitgelieferte .pem-Datei beibehalten habe und nicht mit der nach der Installation von STUNNEL 5.17 im Installationsprozeß erstellten ersetzt habe.
Sobald ich einen Server in meinem Programm konfiguriere und teste, werde ich mit angeblich ungültigem Usernamen oder asswort abgewesen - was natürlich Unsinn ist!
Als Absendeadresse hatte ich urssprünglich eine andere angegeben, aber Hubert schrieb hier weiter oben ausgeführt, dass eine andere From-Adresse als dem Usernamen Probleme bereiten könnte.
Wie bekommt ihr den Versand denn überhaupt hin? Folgende Parameter setze ich im Programm:
Code: Alles auswählen
cEmptyStr := Chr(0)
// cUser := alltrim( ::oTabCtrl:GetPage(_PAGE1_):USERNAME:EditBuffer() )
// cPassword := alltrim( ::oTabCtrl:GetPage(_PAGE1_):PASSWORT:EditBuffer() )
cUser := ConvToANSICp( alltrim( ::oTabCtrl:GetPage(_PAGE1_):USERNAME:EditBuffer() ) )
cPassword := ConvToANSICp( alltrim( ::oTabCtrl:GetPage(_PAGE1_):PASSWORT:EditBuffer() ) )
cBcc := iif( empty( ::oTabCtrl:GetPage(_PAGE1_):BCC:EditBuffer() ), Chr(0), "<" + ConvToANSICp( alltrim( ::oTabCtrl:GetPage(_PAGE1_):BCC:EditBuffer() ) ) + ">" )
cFrom := "<" + ConvToANSICp( alltrim( ::oTabCtrl:GetPage(_PAGE1_):cFROM:EditBuffer() ) ) + ">"
cReply := iif( empty( ::oTabCtrl:GetPage(_PAGE1_):REPLYTO:EditBuffer() ), Chr(0), "<" + ConvToANSICp( alltrim( ::oTabCtrl:GetPage(_PAGE1_):REPLYTO:EditBuffer() ) ) + ">" )
nPort := val( ::oTabCtrl:GetPage(_PAGE1_):PORT:EditBuffer() )
cServer := ConvToANSICp( alltrim( ::oTabCtrl:GetPage(_PAGE1_):SERVERNAME:EditBuffer() ) )
cBetreff := ConvToANSICp( "Testmail: " + alltrim( ::oTabCtrl:GetPage(_PAGE1_):BETREFF:EditBuffer() ) )
nVerschl := ::oTabCtrl:GetPage(_PAGE1_):AUTHART:GetSelectedData()
nAuthenti := iif( ::oTabCtrl:GetPage(_PAGE1_):AUTHENTIFI:GetData(), 1, 0 )
lSSL := ::oTabCtrl:GetPage(_PAGE1_):VERSCHLUES:GetData()
cAnhang := trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE1:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE2:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE3:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE4:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE5:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE6:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE7:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE8:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE9:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE10:EditBuffer() ) + CRLF
cAnhang += trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE11:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE12:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE13:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE14:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE15:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE16:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE17:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE18:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE19:EditBuffer() ) + CRLF + trim( ::oTabCtrl:GetPage(_PAGE2_):ZEILE20:EditBuffer() )
cMailtext := ConvToANSICp( cAnhang )
nProxyPort := 8801
cProxyDir := CurDrive() + ":\Easydogw\"
cProxyExe := "stunnel.exe"
cProxyCert := "stunnel.pem"
nFlags := 1 // 1 = display Stunnel icon on the taskbar
cLogName := cProxyDir + "SEE4XB.LOG"
nCode := XseeAttach(1, SEE_KEY_CODE)
if nCode < 0
cTemp := SPACE(500)
nCode := XseeErrorText(0,nCode,@cTemp,500)
dsConfirmBox(, "Die Initialisierung ist fehlgeschlagen!" ;
+ chr( xbeK_RETURN ) + "Fehlertext: " + Left( cTemp, nCode ), ;
"Prüfung fehlgeschlagen", ;
{{BMP_PBOKAY, ""}}, ;
XBPMB_CRITICAL,,,,,.t.,,, {|oDlg| oDlg:TextOptions:=XBPSTATIC_TEXT_LEFT+XBPSTATIC_TEXT_VCENTER} )
nCode := XseeRelease()
else
#ifdef ENTWICKLUNG
nCode := XseeStringParam(0, SEE_LOG_FILE, @cLogName)
#endif
nCode := XseeIntegerParam(0, SEE_IGNORE_REJECTED, 1)
if lSSL
nCode := XseeSetProxySSL(0, nFlags, @cProxyDir, @cProxyCert, @cProxyExe)
if nCode < 0
cTemp := SPACE(500)
nCode := XseeErrorText(0,nCode,@cTemp,500)
dsConfirmBox(, "Die Verschlüsselung konnte nicht aktiviert werden!" ;
+ chr( xbeK_RETURN ) + "Fehlertext: " + Left( cTemp, nCode ), ;
"Prüfung fehlgeschlagen", ;
{{BMP_PBOKAY, ""}}, ;
XBPMB_CRITICAL,,,,,.t.,,, {|oDlg| oDlg:TextOptions:=XBPSTATIC_TEXT_LEFT+XBPSTATIC_TEXT_VCENTER} )
else
nCode := XseeIntegerParam(0, SEE_AUTHENTICATE_PROTOCOL, nVerschl)
nCode := XseeSmtpConnectSSL(0, nProxyPort, nPort, @cServer, @cUser, @cPassword, @cFrom, @cReply, Chr(0))
if nCode < 0
cTemp := SPACE(500)
nCode := XseeErrorText(0,nCode,@cTemp,500)
dsConfirmBox(, "Die Anmeldung am SMTP-Server war nicht möglich!" ;
+ chr( xbeK_RETURN ) + "Fehlertext: " + Left( cTemp, nCode ), ;
"Prüfung fehlgeschlagen", ;
{{BMP_PBOKAY, ""}}, ;
XBPMB_CRITICAL,,,,,.t.,,, {|oDlg| oDlg:TextOptions:=XBPSTATIC_TEXT_LEFT+XBPSTATIC_TEXT_VCENTER} )
else
cTo := cFrom
nCode := XseeIntegerParam(0, SEE_QUOTED_PRINTABLE, QUOTED_ISO_8859_1)
nCode := XseeSendEmail(0,@cTo,@cEmptyStr,@cBcc,@cBetreff,@cMailtext,@cEmptyStr)
if nCode < 0
cTemp := SPACE(500)
nCode := XseeErrorText(0,nCode,@cTemp,500)
dsConfirmBox(, "Die Testmail konnte nicht gesendet werden!" ;
+ chr( xbeK_RETURN ) + "Fehlertext: " + Left( cTemp, nCode ), ;
"Prüfung fehlgeschlagen", ;
{{BMP_PBOKAY, ""}}, ;
XBPMB_CRITICAL,,,,,.t.,,, {|oDlg| oDlg:TextOptions:=XBPSTATIC_TEXT_LEFT+XBPSTATIC_TEXT_VCENTER} )
else
dsConfirmBox(, "Die Testmail wurde an die Absendeadresse gesendet!" ;
+ chr( xbeK_RETURN ) + "Bitte Posteingang prüfen", ;
"Prüfung erfolgreich", ;
{{BMP_PBOKAY, ""}}, ;
XBPMB_INFORMATION,,,,,.t.,,, {|oDlg| oDlg:TextOptions:=XBPSTATIC_TEXT_LEFT+XBPSTATIC_TEXT_VCENTER} )
endif
nCode := XseeClose(0)
endif
endif
else
nCode := XseeIntegerParam(0, SEE_SMTP_PORT, nPort)
if nAuthenti == 1
nCode := XseeIntegerParam(0, SEE_ENABLE_ESMTP, nAuthenti)
nCode := XseeStringParam(0, SEE_SET_USER, @cUser)
nCode := XseeStringParam(0, SEE_SET_SECRET, @cPassword)
endif
nCode := XseeIntegerParam(0, SEE_AUTHENTICATE_PROTOCOL, nVerschl)
nCode := XseeSmtpConnect(0, @cServer, @cFrom, @cReply)
if nCode < 0
cTemp := SPACE(500)
nCode := XseeErrorText(0,nCode,@cTemp,500)
dsConfirmBox(, "Die Anmeldung am SMTP-Server war nicht möglich!" ;
+ chr( xbeK_RETURN ) + "Fehlertext: " + Left( cTemp, nCode ), ;
"Prüfung fehlgeschlagen", ;
{{BMP_PBOKAY, ""}}, ;
XBPMB_CRITICAL,,,,,.t.,,, {|oDlg| oDlg:TextOptions:=XBPSTATIC_TEXT_LEFT+XBPSTATIC_TEXT_VCENTER} )
else
nCode := XseeIntegerParam(0, SEE_QUOTED_PRINTABLE, QUOTED_ISO_8859_1)
cTo := cFrom
nCode := XseeSendEmail(0,@cTo,@cEmptyStr,@cBcc,@cBetreff,@cMailtext,@cEmptyStr)
if nCode < 0
cTemp := SPACE(500)
nCode := XseeErrorText(0,nCode,@cTemp,500)
dsConfirmBox(, "Die Testmail konnte nicht gesendet werden!" ;
+ chr( xbeK_RETURN ) + "Fehlertext: " + Left( cTemp, nCode ), ;
"Prüfung fehlgeschlagen", ;
{{BMP_PBOKAY, ""}}, ;
XBPMB_CRITICAL,,,,,.t.,,, {|oDlg| oDlg:TextOptions:=XBPSTATIC_TEXT_LEFT+XBPSTATIC_TEXT_VCENTER} )
else
dsConfirmBox(, "Die Testmail wurde an die Absendeadresse gesendet!" ;
+ chr( xbeK_RETURN ) + "Bitte Posteingang prüfen", ;
"Prüfung erfolgreich", ;
{{BMP_PBOKAY, ""}}, ;
XBPMB_INFORMATION,,,,,.t.,,, {|oDlg| oDlg:TextOptions:=XBPSTATIC_TEXT_LEFT+XBPSTATIC_TEXT_VCENTER} )
endif
nCode := XseeClose(0)
endif
endif
nCode := XseeRelease()
endif
Wie ihr seht, habe ich auch schon experimentiert mit ConvToAANSICp() bei Usernamen und Passwort. Aber völlig egal, ob ich die Feldinhalte umwandeln lasse oder nicht: Es klappt nicht.
Code: Alles auswählen
*** seeIntegerParam(0,32,1)
*** seeSetProxySSL(0,1,'d:\Easydogw\','stunnel.pem','stunnel.exe')
*** seeIntegerParam(0,62,2)
*** seeSmtpConnectSSL(0,8801,465,'smtp.mail.yahoo.com','martin_altmann2001','*','<martin_altmann2001@yahoo.de>','',''
*** seeStringParam(0,58,'martin_altmann2001')
*** seeStringParam(0,57,*)
*** seeIntegerParam(0,29,1)
*** StartStunnel(0,'Smtp')
d:\Easydogw\stunnel.exe d:\Easydogw\SmtpConfig(0).txt
CreateProcess 0: pid=1480 thr=1476
Stunnel started (chan 0, process 0)
Connecting...
<200:574873031>
VS Win32 Version 7.3.1 Build 2
SEE Win32 Version 7.3.1 Build 2
Altmann & Temming GbR
CID=...
<101:574873046>
vs: LogHandle = 1472
vSock 0 created (IP 0)
<102:574873046>
LocalHost = 'Cheffe'
<104:574873046>
Server = 'CHEFFE'
ServerIP = 192.168.178.38
<105:574873156>
vsConnect(0,'CHEFFE',8801) attempt 1
Socket=1484, RemoteIP=c0a8b226, RemotePort=8801
connect(1484) returns 0
Server has accepted the connection
<106:574873687>
<201:574873718>
recv(0)=37
R: 220 smtp.mail.yahoo.com ESMTP ready
<202:574873921>
S: EHLO yahoo.de
Delay 375 ms
<203:574874296>
recv(0)=115
R: 250-smtp.mail.yahoo.com
R: 250-PIPELINING
R: 250-SIZE 41697280
R: 250-8 BITMIME
R: 250 AUTH PLAIN LOGIN XOAUTH2 XYMCOOKIE
<160:574874296>
S: AUTH LOGIN
<162:574874546>
recv(0)=18
R: 334 VXNlcm5hbWU6
S: bWFydGluX2FsdG1hbm4yMDAx
<163:574874578>
recv(0)=18
R: 334 UGFzc3dvcmQ6
S: ****************
<164:574874843>
recv(0)=54
R: 535 5.7.0 (#MBR1212) Incorrect username or password.
ERROR(574877734): SockCode=0 SeeCode=-49 PrevState=164 ThisState=164 NextState=164
SMTP returned error. 535 5.7.0 (#MBR1212) Incorrect username or password.
SMTP returned error. 535 5.7.0 (#MBR1212) Incorrect username or password.
SMTP returned error. 535 5.7.0 (#MBR1212) Incorrect username or password.
*** seeRelease: Win32 11109 7.3.1 (2) ***
KillStunnel(0) pid=0
TerminateProcess 0: pid=1480 thr=1476
Stunnel killed (chan 0, process 0)
vSocket: 0 closed
*** Releasing channel 0 ***