{ ------------------------------------------------------------------------ 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!" #"

¡Hola!
Para más información puedes contactar a tu vendedor: ",nombreVendedor CLIPPED,' ',xtelefono CLIPPED,"
"
{
LET cuerpo_correo = "
"
}
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