{ ------------------------------------------------------------------------ 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), cuenta_envio,xtipo,xsec 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 MAIN DEFER INTERRUPT CALL STARTLOG("emailmarketing.txt") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING subject 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,xemailvend,xtelefono VARCHAR(100), nombreVendedor VARCHAR(200), url,strusername,xsmtphost,strpassword,strport STRING 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 SELECT a.from_address,a.puerto,a.nombre_servidor,a.clave INTO strusername,strport,xsmtphost,strpassword FROM tbperfil_mail a WHERE cod_perfil =3 # LET subject = datos_recibo.nom1_emp CLIPPED," ",datos_recibo.apell1_emp CLIPPED,"(",datos_recibo.num_emp USING "<<<<",")" LET subject = "=?UTF-8?B?wqFIb2xhIQ==?=Aprovecha +300 revestimientos para ti!"#"¡Aprovecha +300 revestimientos para ti!" #"
", { ESTOS CODIGOS ES PARA ENVIAR UNA IMAGEN CON HIPER VINCULO "

", "Encuesta", "

" } DECLARE busca_email CURSOR FOR SELECT DISTINCT b.email,a.tipo_cliente,a.sec_cliente,d.email, RTRIM(f.nom1_emp)||' '||ISNULL(RTRIM(f.apell1_emp),' '), d.celular INTO xemail,xtipo,xsec,xemailvend,nombreVendedor, xtelefono FROM vetb00004 a INNER JOIN emailmarketing b ON b.tipo_cliente = a.tipo_cliente AND b.sec_cliente = a.sec_cliente AND b.estado IS NULL INNER JOIN vetb00028 c ON c.tipo_cliente = a.tipo_cliente AND c.sec_cliente = a.sec_cliente INNER JOIN adtb00003 f ON f.num_emp = c.sec_vend AND f.status_t IS null LEFT OUTER JOIN seg0000 d ON d.sec_Vend = c.sec_Vend WHERE a.status_T IS NULL AND a.tipo_cliente IN (15,16,19) AND (a.patente IS NOT NULL and a.patente like '%@%') # AND a.tipo_cliente = 15 AND a.sec_cliente = 1991 FOREACH busca_email # LET xemail = 'jsoto@marmotech.com.do' LET cuerpo_correo = " Información y Imagen

¡Hola!

Para más información puedes contactar a tu vendedor: ",nombreVendedor CLIPPED,' ',xtelefono CLIPPED,"

Oferta " { LET cuerpo_correo = "

¡Hola!

Para más información puedes contactar a tu vendedor: ",nombreVendedor CLIPPED,"

" LET cuerpo_correo =cuerpo_correo CLIPPED, "Oferta" } DISPLAY "data email ",xemail," ",subject," ",cuerpo_correo," ",sesion," ",password," ",s_protocol LET estado_envio = 'INTENTO ENVIO' TRY IF xemailvend IS NOT NULL THEN LET xemail = xemail CLIPPED,",",xemailvend CLIPPED END IF CALL enviaemail(xemail,subject,cuerpo_correo,NULL,strusername,xsmtphost,strport,strpassword) #RETURNING retorne # EXIT FOREACH SELECT DISTINCT a.tipo_cliente FROM emailmarketing a WHERE a.tipo_cliente =xtipo AND a.sec_cliente = xsec IF STATUS <> NOTFOUND THEN UPDATE emailmarketing SET fecha_Envio = getdate(),estado = 'INTENTO ENVIO' WHERE tipo_cliente = xtipo AND sec_cliente = xsec ELSE INSERT INTO emailmarketing(tipo_cliente,sec_cliente,estado,fecha_Envio,email) VALUES (xtipo,xsec,estado_envio,getdate(),xemail) END IF LET cuenta_envio = cuenta_Envio + 1 IF cuenta_Envio > 490 THEN EXIT FOREACH END IF CATCH LET estado_Envio = 'ERROR ENVIO' UPDATE emailmarketing SET fecha_Envio = getdate(),estado = 'ERROR ENVIO' WHERE email = xemail END TRY END FOREACH END FUNCTION FUNCTION elimina() DELETE FROM emailmarketing WHERE email = xemail END FUNCTION