mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
| 
 | |
| /*------------------------------------------------------------------------
 | |
|     File        : SocketReader.p
 | |
|     Purpose     :
 | |
|     Author(s)   : Abe Voelker
 | |
|     Created     : Sat Aug 21 08:31:38 CDT 2010
 | |
|     Notes       : Based on code from smtpmail.p
 | |
|   ----------------------------------------------------------------------*/
 | |
| 
 | |
| /* ***************************  Definitions  ************************** */
 | |
| DEFINE INPUT PARAMETER objSendEmailAlg    AS email.SendEmailSocket NO-UNDO.
 | |
| DEFINE VARIABLE vbuffer AS MEMPTR  NO-UNDO.
 | |
| DEFINE VARIABLE vstatus AS LOGICAL NO-UNDO.
 | |
| DEFINE VARIABLE vState  AS INTEGER NO-UNDO.
 | |
| 
 | |
| 
 | |
| ASSIGN vstate = 1.
 | |
| 
 | |
| /* ********************  Preprocessor Definitions  ******************** */
 | |
| 
 | |
| 
 | |
| /* ***************************  Main Block  *************************** */
 | |
| 
 | |
| FUNCTION getHostname RETURNS CHARACTER():
 | |
|     DEFINE VARIABLE cHostname AS CHARACTER NO-UNDO.
 | |
|     INPUT THROUGH hostname NO-ECHO.
 | |
|       IMPORT UNFORMATTED cHostname.
 | |
|     INPUT CLOSE.
 | |
|     RETURN cHostname.
 | |
| END FUNCTION.
 | |
| 
 | |
| /*
 | |
|   Status:
 | |
|         0 - No Connection to the server
 | |
|         1 - Waiting for 220 connection to SMTP server
 | |
|         2 - Waiting for 250 OK status to start sending email
 | |
|         3 - Waiting for 250 OK status for sender
 | |
|         4 - Waiting for 250 OK status for recipient
 | |
|         5 - Waiting for 354 OK status to send data
 | |
|         6 - Waiting for 250 OK status for message received
 | |
|         7 - Quiting
 | |
| */
 | |
| 
 | |
| PROCEDURE newState:
 | |
|     DEFINE INPUT PARAMETER newState AS INTEGER.
 | |
|     DEFINE INPUT PARAMETER pstring  AS CHARACTER.
 | |
|     vState = newState.
 | |
|     IF pstring = "" THEN
 | |
|         RETURN.
 | |
|     SET-SIZE(vbuffer) = LENGTH(pstring) + 1.
 | |
|     PUT-STRING(vbuffer,1) = pstring.
 | |
|     SELF:WRITE(vbuffer, 1, LENGTH(pstring)).
 | |
|     SET-SIZE(vbuffer) = 0.
 | |
| END PROCEDURE.
 | |
| 
 | |
| PROCEDURE ReadSocketResponse:
 | |
|     DEFINE VARIABLE vlength AS INTEGER NO-UNDO.
 | |
|     DEFINE VARIABLE str AS CHARACTER NO-UNDO.
 | |
|     DEFINE VARIABLE v AS INTEGER NO-UNDO.
 | |
| 
 | |
|     MESSAGE SELF:GET-BYTES-AVAILABLE() VIEW-AS ALERT-BOX.
 | |
|     vlength = SELF:GET-BYTES-AVAILABLE().
 | |
|     IF vlength > 0 THEN DO:
 | |
|         SET-SIZE(vbuffer) = vlength + 1.
 | |
|         SELF:READ(vbuffer, 1, vlength, 1).
 | |
|         str = GET-STRING(vbuffer,1).
 | |
|         SET-SIZE(vbuffer) = 0.
 | |
|         objSendEmailAlg:handleResponse(str).
 | |
|         /*
 | |
|         v = INTEGER(ENTRY(1, str," ")).
 | |
|         CASE vState:
 | |
|             WHEN 1 THEN
 | |
|                 IF v = 220 THEN
 | |
|                     RUN newState(2, "HELO " + getHostname() + "~r~n").
 | |
|                 ELSE
 | |
|                     vState = -1.
 | |
|             WHEN 2 THEN
 | |
|                 IF v = 250 THEN
 | |
|                     RUN newState(3, "MAIL From: " + "hardcoded@gmail.com" + "~r~n").
 | |
|                 ELSE
 | |
|                     vState = -1.
 | |
|             WHEN 3 THEN
 | |
|                 IF v = 250 THEN
 | |
|                     RUN newState(4, "RCPT TO: " + "hardcoded@gmail.com" + "~r~n").
 | |
|                 ELSE
 | |
|                     vState = -1.
 | |
|             WHEN 4 THEN
 | |
|                 IF v = 250 THEN
 | |
|                     RUN newState(5, "DATA ~r~n").
 | |
|                 ELSE
 | |
|                     vState = -1.
 | |
|             WHEN 5 THEN
 | |
|                 IF v = 354 THEN
 | |
|                     RUN newState(6, "From: " + "hardcoded@gmail.com" + "~r~n" +
 | |
|                                 "To: " + "hardcoded@gmail.com" + " ~r~n" +
 | |
|                           "Subject: " + "Test Subject" +
 | |
|                            " ~r~n~r~n" +
 | |
|                            "Test Body" + "~r~n" +
 | |
|                            ".~r~n").
 | |
|                 ELSE
 | |
|                     vState = -1.
 | |
| 
 | |
|             WHEN 6 THEN
 | |
|                 IF v = 250 THEN
 | |
|                     RUN newState(7,"QUIT~r~n").
 | |
|                 ELSE
 | |
|                     vState = -1.
 | |
|         END CASE.
 | |
|         */
 | |
|     END.
 | |
|     /*
 | |
|     IF vState = 7 THEN
 | |
|        MESSAGE "Email has been accepted for delivery.".
 | |
|     IF vState < 0 THEN
 | |
|         MESSAGE "Email has been aborted".
 | |
|     */
 | |
| END PROCEDURE.
 | |
| 
 |