Email mit SMTP-Auth
Verfasst: 06.07.2010 19:26
Hallo,
auch wenn ichnicht davon ausgehe, dass der nachfolgende Code besonders effizient, elegant und beispielhaft oder einfach nur cool ist, so wurde er nachgefragt und mir fällt kein besser Ort als dieses Sub-Forum ein, um der Anfrage nachzukommen.
Folgender Code entstammt meinem Projekt rLOOKvUPs. Die Besonderheit daran ist eben, dass hier als Absender und Empfänger Email-Adresse die gleiche Adresse verwendet wird. Ferner wir lediglich ein übergebener String versender, die Authentifizierung am Mail-Server erfolgt wie der Topic schon sagt mit SMTP-Auth. Erfolgreich getestet habe ich es mit 1&1, GMX und web.de. Den Code habe ich selbst geschrieben, mit ein klein wenig "Inspiration" durch das Code Archive und der Beschreibung einer SMTP-Auth-Sitzung bei Wikipedia.
Viel Spaß damit!
auch wenn ichnicht davon ausgehe, dass der nachfolgende Code besonders effizient, elegant und beispielhaft oder einfach nur cool ist, so wurde er nachgefragt und mir fällt kein besser Ort als dieses Sub-Forum ein, um der Anfrage nachzukommen.
Folgender Code entstammt meinem Projekt rLOOKvUPs. Die Besonderheit daran ist eben, dass hier als Absender und Empfänger Email-Adresse die gleiche Adresse verwendet wird. Ferner wir lediglich ein übergebener String versender, die Authentifizierung am Mail-Server erfolgt wie der Topic schon sagt mit SMTP-Auth. Erfolgreich getestet habe ich es mit 1&1, GMX und web.de. Den Code habe ich selbst geschrieben, mit ein klein wenig "Inspiration" durch das Code Archive und der Beschreibung einer SMTP-Auth-Sitzung bei Wikipedia.
Viel Spaß damit!
Code: Alles auswählen
InitNetwork()
Enumeration
#NotificationMail
EndEnumeration
Declare.s ReceiveData(ConnectionID.i)
Declare SendString(ConnectionID, StringToSend.s)
Procedure.i SendMyMail(Server.s,User.s,Pass.s,Mail.s,Betreff.s,Inhalt.s)
Protected ReturnValue.i = 0
Protected ConnectionID
ConnectionID = OpenNetworkConnection(Server,25)
If ConnectionID
If ReceiveData(ConnectionID) = "220"
SendString(ConnectionID,"EHLO rvsLOOKUP.localhost")
If ReceiveData(ConnectionID) = "250"
If ReceiveData(ConnectionID) = "250"
SendString(ConnectionID,"AUTH LOGIN")
If ReceiveData(ConnectionID) = "334"
Protected tmpString.s = Space(1024)
Base64Encoder(@User,StringByteLength(User),@tmpString,1024)
SendString(ConnectionID,tmpString)
If ReceiveData(ConnectionID) = "334"
tmpString = Space(1024)
Base64Encoder(@Pass,StringByteLength(Pass),@tmpString,1024)
SendString(ConnectionID,tmpString)
If ReceiveData(ConnectionID) = "235"
SendString(ConnectionID,"MAIL FROM: <"+Mail+">")
If ReceiveData(ConnectionID) = "250"
SendString(ConnectionID,"RCPT TO: <"+Mail+">")
If ReceiveData(ConnectionID) = "250"
SendString(ConnectionID,"DATA")
If ReceiveData(ConnectionID) = "354"
SendString(ConnectionID,"From: <"+Mail+">")
SendString(ConnectionID,"To: <"+Mail+">")
SendString(ConnectionID,"Subject: "+Betreff)
SendString(ConnectionID,"")
SendString(ConnectionID,Inhalt)
SendString(ConnectionID,".")
If ReceiveData(ConnectionID) = "250"
SendString(ConnectionID,"QUIT")
CloseNetworkConnection(ConnectionID)
ReturnValue = 1
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
ProcedureReturn ReturnValue
EndProcedure
Procedure.s ReceiveData(ConnectionID)
Define DataResult.s
DataResult = Space(4999)
ReceiveNetworkData(ConnectionID,@DataResult,4999)
DataResult = Left(DataResult,3)
ProcedureReturn DataResult
EndProcedure
Procedure SendString(ConnectionID, StringToSend.s)
StringToSend + #CRLF$
SendNetworkData(ConnectionID, @StringToSend, Len(StringToSend))
EndProcedure