einfache SendMail
Verfasst: 16.05.2010 14:39
So hier mal eine Procedur für Mails die ich mal angefangen und nie fertig gemacht habe mal schauen eventuell habe ich ja mal doch noch Zeit weiter zu machen doch derzeit wird das leider nichts.
Vielleicht kann es ja mal jemand brauchen wenn er sich so was schreiben will.
Ich wollte den Code eigentlich noch mit Kommentaren ausstatten und ausbauen damit auch anhänge verschickt werden können und je nach Fehler entsprechende werte zurückgegeben werden ...
Vielleicht kann es ja mal jemand brauchen wenn er sich so was schreiben will.
Ich wollte den Code eigentlich noch mit Kommentaren ausstatten und ausbauen damit auch anhänge verschickt werden können und je nach Fehler entsprechende werte zurückgegeben werden ...
Code: Alles auswählen
EnableExplicit
InitNetwork()
Procedure.s MailDate()
Protected date$
date$ = FormatDate("%dd %mm %yyyy %hh:%ii:%ss", Date()-3600)+" +0100"
date$ = Left(date$, 3)+StringField("Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec",Month(Date()),"|") +" "+Right(date$, 20)
date$ = StringField("Sun|Mon|Tue|Wed|Thu|Fri|Sat",DayOfWeek(Date())+1,"|") +", "+date$
ProcedureReturn date$
EndProcedure
Procedure.s ReceiveNetworkString(verbindung.i)
Protected len.l, *DatenBuffer = AllocateMemory(2000)
len = ReceiveNetworkData(verbindung, *DatenBuffer, 2000)
ProcedureReturn PeekS(*DatenBuffer, len)
EndProcedure
Procedure SMTP_SendMail(server$, von_name$, von_adresse$, von_password$, an_name$, an_adresse$, subject$, mailtext$)
Protected status.l, buffer$
Protected verbindung.i = OpenNetworkConnection(server$, 587, #PB_Network_TCP)
If verbindung
If Left(ReceiveNetworkString(verbindung), 3) = "220"
SendNetworkString(verbindung, "AUTH LOGIN"+#CRLF$)
If Left(ReceiveNetworkString(verbindung), 3) = "334"
buffer$ = Space(StringByteLength(von_adresse$)*1.35+64)
Base64Encoder(@von_adresse$, StringByteLength(von_adresse$), @buffer$, StringByteLength(von_adresse$)*1.35+64)
SendNetworkString(verbindung, buffer$+#CRLF$)
If Left(ReceiveNetworkString(verbindung), 3) = "334"
buffer$ = Space(StringByteLength(von_password$)*1.35+64)
Base64Encoder(@von_password$, StringByteLength(von_password$), @buffer$, StringByteLength(von_password$)*1.35+64)
SendNetworkString(verbindung, buffer$+#CRLF$)
If Left(ReceiveNetworkString(verbindung), 3) = "235"
SendNetworkString(verbindung, "HELO SendMail"+#CRLF$)
If Left(ReceiveNetworkString(verbindung), 3) = "250"
SendNetworkString(verbindung, "MAIL FROM: " + von_adresse$+#CRLF$)
If Left(ReceiveNetworkString(verbindung), 3) = "250"
SendNetworkString(verbindung, "RCPT TO: "+an_adresse$+#CRLF$)
If Left(ReceiveNetworkString(verbindung), 3) = "250"
SendNetworkString(verbindung, "DATA"+#CRLF$)
If Left(ReceiveNetworkString(verbindung), 3) = "354"
SendNetworkString(verbindung, "Date: " + MailDate()+#CRLF$)
SendNetworkString(verbindung, "From: " + von_name$ + " <" + von_adresse$ + ">"+#CRLF$)
SendNetworkString(verbindung, "To: " + an_name$ + " <" + an_adresse$ + ">"+#CRLF$)
SendNetworkString(verbindung, "Subject: " + subject$+#CRLF$)
SendNetworkString(verbindung, ""+#CRLF$)
SendNetworkString(verbindung, mailtext$+#CRLF$)
SendNetworkString(verbindung, "."+#CRLF$)
If Left(ReceiveNetworkString(verbindung), 3) = "250"
SendNetworkString(verbindung, "QUIT"+#CRLF$)
If Left(ReceiveNetworkString(verbindung), 3) = "221"
status = 1
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
CloseNetworkConnection(verbindung)
EndIf
ProcedureReturn status
EndProcedure