I use this code, but sever SMTP requires a user and a password.
How to make with this code?
thank
Code: Select all
SMTPserver$ = "216.136.173.12" ; ip SMTP server (smtp.mail.yahoo.fr)
Sender$="moi@domaine.fr" ; Sender e-mail
Domain$="domaine.fr"; Sender domain, everyting after the @
Receiver$="rece@domaine.fr " ; receiver e-mail
message_email$="Test Message »
#sockaddr_size = 16
#SOCK_STREAM = 1
#AF_INET = 2
#WSA_DESCRIPTIONLEN = 256
#WSA_DescriptionSize = 257
#WSA_SYS_STATUS_LEN = 128
#WSA_SysStatusSize = 129
#MAXGETHOSTSTRUCT = 1024
Structure sockaddress
sin_family.w
sin_port.w
sin_addr.l
sin_zero.s
EndStructure
Structure WSADataType
wVersion.w
wHighVersion.w
szDescription.s[#WSA_DescriptionSize]
szSystemStatus.s[#WSA_SysStatusSize]
iMaxSockets.w
iMaxUdpDg.w
lpVendorInfo.l
EndStructure
#FD_READ = $1
#FD_ACCEPT = $8
#FD_CONNECT = $10
#FD_CLOSE = $20
Structure HostEnt
h_name.l
h_aliases.l
h_addrtype.w
h_length.w
h_addr_list.l
EndStructure
Global Socket_Number.w
Global Read_Sock.l
Global Read_Sock_Buffer.sockaddress
Global Start_up_Data.WSADataType
Global Socket_Buffer.sockaddress
Global Read_Buffer$
Global ontvangen$
Global timer1
#timeout=10
Global crlf$
crlf$=Chr(13)+Chr(10)
Global RC.l, X.l, Bytes.l
Global RemoteIP.l
Global RemotePort.l
remoteport = 25
PB_TCP_MESSAGE = RegisterWindowMessage_("WM_TCPMESSAGE_PB")
Debug "message is :"+Str(PB_TCP_MESSAGE)
#hostent_size = 16
#receive=1
Global hwnd
hwnd= OpenWindow(1, 200, 200, 673, 455 ,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget,"test")
CreateGadgetList(WindowID())
Procedure Connect_winsock()
Socket_Number.w = socket_(#AF_INET, #SOCK_STREAM, 0)
Debug "Socket_Number: " + Str(Socket_Number.w)
If Socket_Number.w < 1
ProcedureReturn 0
EndIf
Socket_Buffer\sin_family = #AF_INET
Socket_Buffer\sin_port = htons_(RemotePort)
Socket_Buffer\sin_addr = RemoteIP
Socket_Buffer\sin_zero = Chr(0)
X = connect_(Socket_Number.w, @Socket_Buffer, #sockaddr_size)
Debug "connect = " +Str(X)
X = WSAAsyncSelect_(Socket_Number.w, hwnd, PB_TCP_MESSAGE, #FD_READ | #FD_CLOSE)
Debug "WSAAsync = " + Str(X)
If X > 0
X = WSACleanup_()
ProcedureReturn 0
EndIf
EndProcedure
Procedure cleanup_winsock()
RC = WSACleanup_()
Debug "WSACleanup() = " + Str(RC)
EndProcedure
Procedure Zend(zbuf$)
Debug zbuf$
send=send_(Socket_Number.w, @zbuf$, Len(zbuf$), 0)
EndProcedure
Procedure receive_TCP()
Read_Buffer$=Space(1024)
Bytes = recv_(Socket_Number, @Read_Buffer$, 1024, 0)
If Bytes <> 0
ontvangen$ = Left(Read_Buffer$, Bytes)
Debug ontvangen$
EndIf
EndProcedure
Procedure check_smtp(reply$)
timer1=0
Repeat
WaitWindowEvent()
If Timer1 > #timeout
ProcedureReturn 0
EndIf
Until Left(ontvangen$, 4) = reply$
ontvangen$ = ""
ProcedureReturn 1
EndProcedure
Procedure sendmail()
RC = WSACleanup_()
RC = WSAStartup_($101, @Start_up_Data)
RemoteIP = inet_addr_(SMTPserver$)
If RemoteIP > 0
Connect_winsock()
If check_smtp("220 ")=1
zend("HELO "+domain$ + crlf$ )
If check_smtp("250 ")=1
zend("MAIL From: <"+sender$+">" + crlf$)
If check_smtp("250 ")
zend("RCPT To: <"+receiver$+">" + crlf$)
If check_smtp("250 ")
zend("DATA" + crlf$)
If check_smtp("354 ")
zend("X-Mailer: Project IA Emjyarts" + crlf$)
zend("Date: Sat, 28 Sep 2002 22:50:23 +0100 (GMT)" + crlf$)
zend("From: "+Sender$+ crlf$)
zend("To: "+receiver$ + crlf$)
zend("Subject: King of the world" + crlf$)
zend( crlf$ )
zend(message_email$ + crlf$)
zend( crlf$ + "." + crlf$)
If check_smtp("250 ")
zend("QUIT" + crlf$ )
check_smtp("221 ")
closesocket_(Socket_Number)
timer1=0
Repeat
rc= WSACleanup_()
WindowEvent()
Until rc=-1 Or timer1>5
ProcedureReturn 1
Else
send_ok=-1
EndIf
Else
zend("QUIT" + crlf$ )
EndIf
Else
zend("QUIT" + crlf$ )
EndIf
Else
zend("QUIT" + crlf$ )
EndIf
Else
zend("QUIT" + crlf$ )
EndIf
EndIf
EndIf
ProcedureReturn -1
EndProcedure
Procedure MyWindowCallback(WindowID, Message, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
Select message
Case PB_TCP_MESSAGE
receive_TCP()
result=0
Case #wm_timer
result=0
Select wparam
Case 1
timer1 +1
If timer1>$FFFFFF
timer1=0
EndIf
EndSelect
EndSelect
ProcedureReturn Result
EndProcedure
If hwnd
ButtonGadget(#1, 25, 11, 50, 19, "TestMail" ,#PB_Text_Center )
SetWindowCallback(@MyWindowCallback())
; -------------- timers ----------------
SetTimer_(hWnd,1,1000,0) ; 1 seconden timer
; SetTimer_(hWnd,2,50,0) ; 50 milisecond timer
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_EventGadget
Select EventGadgetID()
Case 1
sendmail()
EndSelect
EndIf
Until eventid=#PB_Event_CloseWindow
EndIf
End