Page 1 of 1

SMTP With password ?

Posted: Thu May 22, 2003 2:40 pm
by Julien
Hi,
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  

Posted: Fri May 23, 2003 7:14 pm
by ADN
Only Pop requires a user and a password ?
I dont know :cry: