{ ------------------------------------------------------------------------ FORMULARIO : SENDEMAIL OBJETIVO : Herramienta para enviar emails masivos PROGRAMADOR : Ing. Juan Soto. FECHA REALIZACION : Diciembre 7, 2021 ----------------------------------------------------------------------------- } IMPORT JAVA javax.mail.Session GLOBALS "noprgb000.4gl" DEFINE genera CHAR(2), xingresos,xdescuentos DEC(12,2), num_Doc,email_err,cuenta_envio,num_nomi_ant INT, estado_Envio VARCHAR(50), vendedorEmail,emailCC VARCHAR(60),cuerpo_correo VARCHAR(2000), subject VARCHAR(100), perfil,procedimiento VARCHAR(60),nombre_file,nombre_empleado VARCHAR(80) DEFINE sesion Session, password,s_protocol,respuesta,mensajes STRING DEFINE meses ARRAY[12] OF CHAR(15) DEFINE criterio10 CHAR(200) MAIN DEFER INTERRUPT CALL STARTLOG("emailmarketing.txt") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "smarmotech" USER usuarios USING clave CALL enviaemailMain() END MAIN #"file:///f:/master/IMAGENES/LOGO.JPG" #"file:///C://Users//jsoto//Documents//PROYECTOS//BDL320//MARMOTECH//PROYECTO//bin//IMAGENES//LOGO_DCM.PNG" FUNCTION enviaemailMain() DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings() r_filename STRING, -- filename of Report Design Document including .4rp extension r_output STRING, -- output format option preview INTEGER, -- TRUE/FALSE, to set preview option retorne BOOLEAN, xemail VARCHAR(100) IF NOT validate_param_smpt_auth() THEN CALL FGL_WINMESSAGE("INFO","NO EXISTE CONEXION","INFO") END IF CALL create_cxion_session() RETURNING sesion,password,s_protocol LET cuenta_Envio = 0 # LET subject = datos_recibo.nom1_emp CLIPPED," ",datos_recibo.apell1_emp CLIPPED,"(",datos_recibo.num_emp USING "<<<<",")" LET subject = "LANZAMIENTO TIENDA VIRTUAL " LET cuerpo_correo = "" DECLARE busca_email CURSOR FOR SELECT DISTINCT a.email,a.fecha_ultima_venta INTO xemail FROM emailmarketing a WHERE estado IS NULL AND ( a.email not like '%<%' AND a.email NOT LIKE '%;%') ORDER BY a.fecha_ultima_venta DESC FOREACH busca_email DISPLAY "data email ",xemail," ",subject," ",cuerpo_correo," ",sesion," ",password," ",s_protocol TRY CALL enviaemail(xemail,subject,cuerpo_correo,sesion,password,s_protocol) RETURNING retorne CATCH LET estado_Envio = 'ERROR ENVIO' UPDATE emailmarketing SET fecha_Envio = getdate(),estado = 'ERROR ENVIO' WHERE email = xemail END TRY UPDATE emailmarketing SET fecha_Envio = getdate(),estado = 'ENVIO SATISFACTORIO' WHERE email = xemail LET estado_envio = 'ENVIO SATISFACTORIO' LET cuenta_envio = cuenta_Envio + 1 IF cuenta_Envio > 450 THEN EXIT FOREACH END IF END FOREACH END FUNCTION